Ik heb een lijst met producten die meerdere prijzen kunnen hebben. Nu wil ik een overzicht van alle producten en die producten die meerdere prijzen hebben alleen de goedkoopste prijs laten zien (vanaf 1,00)
IPV
Appels 1,00
Appels 2,00
Appels 3,75
--
Appels vanaf 1,00
Ik heb dit als select van de tabel
sql = "SELECT * FROM producten GROUP BY artikel_id ORDER BY prijs DESC";
De tabel "PRODUCTEN" bestaat uit
product_id
artikel_id
prijs
omschrijving
Het lukt me niet om de laagste prijs te laten zien. Wat doe ik niet goed?
SELECT artikel_id, MIN(prijs) AS minprijs
FROM producten
GROUP BY artikel_id
[size=xsmall]Toevoeging op 08/08/2016 14:11:24:[/size]
En voor de alias (minprijs) kun je ook een naam die jou leuk lijkt kiezen. Kies echter bij voorkeur niet "prijs" aangezien dat ook de naam van een kolom is. En dat geeft soms onverwachte resultaten bij sorteren.
En mocht je naast de artikel_id ook nog andere kolommen willen hebben:
dat kan, maar dan moet je die óók in het stuk GROUP BY toevoegen
Dit werkt inderdaad helemaal goed. Maar nu heb ik nog een vraag. Ik heb van de artikelen soms 0.00 staan en dat is dan dat de prijs op aanvraag is. Maar stel dat ik meerdere prijzen heb waaronder ook 0.00 dan wil ik eigenlijk de tweede prijs zien.
Voorbeeld
Appels 0.00
Appels 3.00
Appels 2.75
Nu laat hij dan zien:
Appels 0.00
Maar ik wil eigenlijk dan de eerste volgende dus
Appels 2.75