Prijslijst overzicht en alleen laagste prijs laten zien.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kees Mulder

Kees Mulder

08/08/2016 13:39:14
Quote Anchor link
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?
 
PHP hulp

PHP hulp

20/03/2019 11:26:13
 
- Ariën -
Beheerder

- Ariën -

08/08/2016 13:43:47
Quote Anchor link
Hoe sla je het op in de database? En wat voor veldtype?
Ik neem aan dat je het niet met een komma opslaat? Want daar kan MySQL niet mee rekenen.
Gewijzigd op 08/08/2016 13:44:23 door - Ariën -
 
Ivo P

Ivo P

08/08/2016 13:46:10
Quote Anchor link
query's met "SELECT *" en "GROUP BY"

Dat is eigenlijk altijd fout, ook al geeft Mysql wel vaak een antwoord dat min of meer toevallig is, wat je wilde hebben.
 
Kees Mulder

Kees Mulder

08/08/2016 13:53:47
Quote Anchor link
- Ariën - op 08/08/2016 13:43:47:
Hoe sla je het op in de database? En wat voor veldtype?
Ik neem aan dat je het niet met een komma opslaat? Want daar kan MySQL niet mee rekenen.


Nee de prijs is: decimal(7,2)
 
Ivo P

Ivo P

08/08/2016 14:09:30
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT artikel_id, MIN(prijs) AS minprijs
FROM producten
GROUP BY artikel_id


Toevoeging op 08/08/2016 14:11:24:

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
 
Kees Mulder

Kees Mulder

08/08/2016 17:22:09
Quote Anchor link
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

Hoe krijg ik dat voor elkaar?!
Gewijzigd op 08/08/2016 17:24:24 door Kees Mulder
 
Ivo P

Ivo P

08/08/2016 17:32:45
Quote Anchor link
als er geen echte prijs is, dan lijkt me NULL beter dan 0

Maar ik snap niet helemaal waarom de prijs dan op aanvraag kan zijn, terwijl er ook een tweede prijs is?

Toevoeging op 08/08/2016 17:35:22:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT artikel_id, MIN(prijs) AS minprijs
FROM producten
WHERE prijs > 0
GROUP BY artikel_id


(en zie hier ook een reden om de alias niet "prijs" te maken
 



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.