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
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.
kan dat niet aan elkaar gevoegd worden, dus query in query; hoe luidt dan de query voor MYSQL?
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

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.
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.
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:
INSERT INTO
  tabelnaam(stempel)
VALUES(
  NOW()
)

en om de boel aardig op te maken:
SELECT
  DATE_FORMAT(stempel, '%e-%m-%Y') AS datumNL
FROM
  tabelnaam

Reageren