hoogste ID laten zien bij een GROUP BY

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Madelief

madelief

09/06/2006 12:37:00
Quote Anchor link
Ik heb het volgende 'probleem'
ik heb bijvoorbeeld 50 aanbiedingen van in totaal 5 winkeliers. Nu wil ik de nieuwste aanbieding van elke winkelier laten zien. Te groeperen op winkeliers en de daardoor geselecteerd producten te sorteren op ID lukt wel, maar hij pakt niet de hoogste ID van elke winkelier aanbieding maar gewoon de eerste aanbieding die hij van de winkelier tegenkomt. Hoe los ik dit probleem op? Ik wil dus eerst het hoogste ID laten selecteren van een product van een winkelier voordat hij GROUPt.

SELECT * FROM producten WHERE producten.aanbieding=1 AND producten.HoofdCat='snoep' AND producten.Controle='0' GROUP BY producten.Winkel ORDER BY producten.ID DESC LIMIT 0,5
 
PHP hulp

PHP hulp

17/11/2024 02:34:41
 
Niek Berckmans

Niek Berckmans

09/06/2006 12:46:00
Quote Anchor link
Je moet voor elke winkelier appart het hoogste id uit de DB halen.

SELECT *
FROM producten
WHERE producten.aanbieding=1
AND producten.HoofdCat='snoep'
AND producten.Controle='0'
AND producten.Winkel='winkelier1'
ORDER BY producten.ID DESC
LIMIT 0,1

enz.
 
Madelief

madelief

09/06/2006 12:51:00
Quote Anchor link
kan dat niet aan elkaar gevoegd worden, dus query in query; hoe luidt dan de query voor MYSQL?
 
Han eev

Han eev

09/06/2006 13:38:00
Quote Anchor link
Je kan het makkelijker doen
SELECT MAX(ID) AS max
FROM producten
WHERE producten.aanbieding=1
AND producten.HoofdCat='snoep'
AND producten.Controle='0'
AND producten.Winkel='winkelier1'

en dan is max het resultaat
 
Frank -

Frank -

09/06/2006 14:26:00
Quote Anchor link
Quote:
de nieuwste aanbieding
Het gebruik van het id (autoincrement?) is alleen betrouwbaar wanneer je 100% zeker weet dat de aanbiedingen niet worden geupdate.

Vaak is het beter/handiger om ook een datumtijdstempel in de tabel te zetten en dan het liefste 2 stuks. Eentje voor de datumtijdstempel van het aanmaken van het record en eentje voor het bijwerken van het record. Op deze manier kun je precies nagaan wanneer wat is aangemaakt en/of bijgewerkt.
 
Madelief

madelief

09/06/2006 15:29:00
Quote Anchor link
ik heb geprobeerd met zijn stempel te werken maar ik kreeg alleen maar 00-0000 in de database of een opmaak volgorde die ik niet wilde ik wil graag 20-06-1988 bijvoorbeeld en niet 1988-20-06 dus toen heb ik maar besloten om met ID's te werken. Maar het klopt wel wat je zegt bij een updaten van geen naar wel aanbieding komt hij niet bovenaan.
 
Frank -

Frank -

09/06/2006 22:05:00
Quote Anchor link
Quote:
of een opmaak volgorde die ik niet wilde
Je hebt helemaal niets te willen! Om het even bot te brengen...

We hebben het hier over data OPSLAG, niet over data PRESENTATIE. Dat zijn 2 dingen die niets, maar dan ook niets met elkaar te maken hebben. Een datum sla je op in een DATE of DATETIME wanneer je ook het tijdstip er bij wilt hebben. En dat moet in het formaat yyyy-mm-dd.

Wil je deze datum (en evt. tijd) op een leuke manier presenteren? Kijk dan eens naar de functie DATE_FORMAT() van MySQL. Zie de handleiding.

Edit: Nog even een paar voorbeeld queries:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
INSERT INTO
  tabelnaam(stempel)
VALUES(
  NOW()
)

en om de boel aardig op te maken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT
  DATE_FORMAT(stempel, '%e-%m-%Y') AS datumNL
FROM
  tabelnaam
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.