Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Hjælp til SQL-forespørgsel

25 views
Skip to first unread message

Kurt Hansen

unread,
Nov 7, 2012, 3:43:28 AM11/7/12
to
I tabellen 'Products' er der et par felt der hedder
'products_date_added' og 'products_last_modified', hvor indholdet er i
følgende form '2012-11-05 14:38:17'.

Kan nogen hjælpe mig med hvad jeg skal skrive i forespørgselsvinduet i
phpMyAdmin for at få en liste over hvilke varer der er nye eller har
ændret sig siden i går, eller inden for den sidste uge (eller whatever)?
--
Venlig hilsen
Kurt Hansen

Leif Neland

unread,
Nov 7, 2012, 4:06:04 AM11/7/12
to
Kurt Hansen formulerede onsdag:
I boksen forneden i phpmyadmin skriver du
DATEDIFF(CURDATE(),products_date_added )< 7
OR DATEDIFF(CURDATE(),products_last_modified )< 7

Desværre kan den boks ikke kombineres med felterne ovenover, så du kan
ikke via formen kave andre kriterier også, dem må du lave manuelt.

Ellers må du bare skrive gårsdagens dato i feltet i søgeformen. Og der
kan man jo ikke kombinere "og" og "eller".

Men du kan lave et wiew.

Create wiew NewOrUpdatedProducts as select * from Products where
DATEDIFF(CURDATE(),products_date_added )< 7
OR DATEDIFF(CURDATE(),products_last_modified )< 7

Og så selecte videre på det i formen i phpmyadmin.

Du kan jo også lave wiev'et med et udvalg af kolonnerne i Products,
eller kombinere dem med andre tabeller.

Leif

--
Husk kørelys bagpå, hvis din bilfabrikant har taget den idiotiske
beslutning at undlade det.


Kurt Hansen

unread,
Nov 7, 2012, 10:24:04 AM11/7/12
to
Den 07/11/12 10.06, Leif Neland skrev:
> Kurt Hansen formulerede onsdag:
>> I tabellen 'Products' er der et par felt der hedder
>> 'products_date_added' og 'products_last_modified', hvor indholdet er i
>> følgende form '2012-11-05 14:38:17'.
>>
>> Kan nogen hjælpe mig med hvad jeg skal skrive i forespørgselsvinduet i
>> phpMyAdmin for at få en liste over hvilke varer der er nye eller har
>> ændret sig siden i går, eller inden for den sidste uge (eller whatever)?

> I boksen forneden i phpmyadmin skriver du
> DATEDIFF(CURDATE(),products_date_added )< 7
> OR DATEDIFF(CURDATE(),products_last_modified )< 7

Desværre. Der kommer bare den sædvanlige:

"#1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'DATEDIFF(CURDATE(),products_date_added )< 7' at line 1".
Jeg har prøvet KUN at køre linje 1, men det giver samme resultat.

> Ellers må du bare skrive gårsdagens dato i feltet i søgeformen. Og der
> kan man jo ikke kombinere "og" og "eller".

Ok, det funker. Bedre end ingenting.

> Men du kan lave et wiew.
>
> Create wiew NewOrUpdatedProducts as select * from Products where
> DATEDIFF(CURDATE(),products_date_added )< 7
> OR DATEDIFF(CURDATE(),products_last_modified )< 7
>
> Og så selecte videre på det i formen i phpmyadmin.

Igen fejl ved 'DATEDIFF(CURDATE()'

Leif Neland

unread,
Nov 7, 2012, 3:02:07 PM11/7/12
to
Efter mange tanker skrev Kurt Hansen:
> Den 07/11/12 10.06, Leif Neland skrev:
>> Kurt Hansen formulerede onsdag:
>>> I tabellen 'Products' er der et par felt der hedder
>>> 'products_date_added' og 'products_last_modified', hvor indholdet er i
>>> følgende form '2012-11-05 14:38:17'.
>>>
>>> Kan nogen hjælpe mig med hvad jeg skal skrive i forespørgselsvinduet i
>>> phpMyAdmin for at få en liste over hvilke varer der er nye eller har
>>> ændret sig siden i går, eller inden for den sidste uge (eller whatever)?
>
>> I boksen forneden i phpmyadmin skriver du
>> DATEDIFF(CURDATE(),products_date_added )< 7
>> OR DATEDIFF(CURDATE(),products_last_modified )< 7
>
> Desværre. Der kommer bare den sædvanlige:
>
> "#1064 - You have an error in your SQL syntax; check the manual that
> corresponds to your MySQL server version for the right syntax to use near
> 'DATEDIFF(CURDATE(),products_date_added )< 7' at line 1".
> Jeg har prøvet KUN at køre linje 1, men det giver samme resultat.
>
Mystisk.

Jeg har lige prøvet denne sætning

SELECT `SidstOpdateret` FROM `t_produkter` WHERE
datediff(curdate(),sidstopdateret)>7

Og den kører som det skal.

Serverversion: 5.1.63-0+squeeze1-log
MySQL klientversion: 5.1.63
PHPMyAdmin: 3.3.7deb7

Kurt Hansen

unread,
Nov 7, 2012, 11:34:48 PM11/7/12
to
Den 07/11/12 21.02, Leif Neland skrev:
> Efter mange tanker skrev Kurt Hansen:
>> Den 07/11/12 10.06, Leif Neland skrev:
>>> Kurt Hansen formulerede onsdag:
>>>> I tabellen 'Products' er der et par felt der hedder
>>>> 'products_date_added' og 'products_last_modified', hvor indholdet er i
>>>> følgende form '2012-11-05 14:38:17'.
>>>>
>>>> Kan nogen hjælpe mig med hvad jeg skal skrive i forespørgselsvinduet i
>>>> phpMyAdmin for at få en liste over hvilke varer der er nye eller har
>>>> ændret sig siden i går, eller inden for den sidste uge (eller
>>>> whatever)?
>>
>>> I boksen forneden i phpmyadmin skriver du
>>> DATEDIFF(CURDATE(),products_date_added )< 7
>>> OR DATEDIFF(CURDATE(),products_last_modified )< 7
>>
>> Desværre. Der kommer bare den sædvanlige:
>>
>> "#1064 - You have an error in your SQL syntax; check the manual that
>> corresponds to your MySQL server version for the right syntax to use
>> near 'DATEDIFF(CURDATE(),products_date_added )< 7' at line 1".
>> Jeg har prøvet KUN at køre linje 1, men det giver samme resultat.

> Mystisk.
>
> Jeg har lige prøvet denne sætning
>
> SELECT `SidstOpdateret` FROM `t_produkter` WHERE
> datediff(curdate(),sidstopdateret)>7

SELECT `products_last_modified`
FROM `products`
WHERE datediff( curdate( ) , products_last_modified ) >7
ORDER BY `products`.`products_last_modified` DESC
LIMIT 0 , 30

- virker også her. Resultatlinjen siger:

Viser poster 0 - 29 ( 7,604 total, forepørgsel tog 0.0089 sek)
[products_last_modified: 2012-10-22 13:24:29 - 2012-08-27 13:46:17]

Nu var det bare en vilkårlig database jeg gik ind i og jeg har, på
stående fod, ikke lige check på de senest ændrede poster dér, men det
ser mærkeligt ud (for mig som amatør), at /alle/ poster i outputtet er
ældre end 7 dage. Det kan godt være rigtigt, men hvorfor bliver de så vist?

> Serverversion: 5.1.63-0+squeeze1-log
> MySQL klientversion: 5.1.63
> PHPMyAdmin: 3.3.7deb7

Programmelversion: 5.1.48 - MySQL Community Server (GPL)
Databaseklientversion: libmysql - 5.1.48
phpMyAdmin: 3.5.2.2

I øvrigt synes jeg outputtet har en temmelig begrænset brugsværdi. Det
viser kun feltet `products_last_modified`. Hvis jeg skal hev en smule
gavn af det, ville det jo være rart med et varenummer eller lignende ;-)

Leif Neland

unread,
Nov 8, 2012, 2:56:50 AM11/8/12
to
Kurt Hansen har bragt dette til os:
> Den 07/11/12 10.06, Leif Neland skrev:

>> Men du kan lave et wiew.
>>
>> Create wiew NewOrUpdatedProducts as select * from Products where
>> DATEDIFF(CURDATE(),products_date_added )< 7
>> OR DATEDIFF(CURDATE(),products_last_modified )< 7
>>
>> Og så selecte videre på det i formen i phpmyadmin.
>
> Igen fejl ved 'DATEDIFF(CURDATE()'

Pinligt. Det fungerer hos mig, hvis man ikke skriver "wiew", men "view"
:o)

Kurt Hansen

unread,
Nov 8, 2012, 6:58:09 AM11/8/12
to
Den 08/11/12 08.56, Leif Neland skrev:
> Kurt Hansen har bragt dette til os:
>> Den 07/11/12 10.06, Leif Neland skrev:
>
>>> Men du kan lave et wiew.
>>>
>>> Create wiew NewOrUpdatedProducts as select * from Products where
>>> DATEDIFF(CURDATE(),products_date_added )< 7
>>> OR DATEDIFF(CURDATE(),products_last_modified )< 7
>>>
>>> Og så selecte videre på det i formen i phpmyadmin.
>>
>> Igen fejl ved 'DATEDIFF(CURDATE()'

> Pinligt. Det fungerer hos mig, hvis man ikke skriver "wiew", men "view"
> :o)

Det gør ingen forskel, da det ikke er dét den kløjs i. Det er
'DATEDIFF(CURDATE()'. Det står med rødt i forespørgselsvinduet og giver
da også en fejl, når jeg kører den.

Jeg har selv slået det op, selv om jeg ingen forstand har på det.
Syntaksen synes at være i orden.

Måske har vi med et lowlevel problem at gøre? jeg er helt blank på
området. Altså:

Jeg går ind i phpMyAdmin og åbner databasen og vælger tabellen
'products'. Her kører jeg så mine forespørgsler. Er det ikke rigtigt?
0 new messages