hoogste ID laten zien bij een GROUP BY
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
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.
kan dat niet aan elkaar gevoegd worden, dus query in query; hoe luidt dan de query voor MYSQL?
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
Quote:
Het gebruik van het id (autoincrement?) is alleen betrouwbaar wanneer je 100% zeker weet dat de aanbiedingen niet worden geupdate. de nieuwste aanbieding
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.
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.
Quote:
Je hebt helemaal niets te willen! Om het even bot te brengen... of een opmaak volgorde die ik niet wilde
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:
en om de boel aardig op te maken:
Gewijzigd op 01/01/1970 01:00:00 door Frank -