Hoi,

Ik ben bezig aan een website en moet hier de hoogste waarde ophalen uit de database qua prijs.

Database:
id, product, prijs

Ik haal het zo op:
<?php
$producten1 = mysql_query("SELECT DISTINCT product, prijs FROM producten ORDER BY prijs DESC LIMIT 3");
while($producten = mysql_fetch_array($producten1)) {
?>

Het probleem alleen is dat de hoogste prijs 120 is en dat ik 102 te zien krijg.
En wat is het TYPE van de kolom van prijs?
- SanThe - op 05/08/2014 22:35:54

En wat is het TYPE van de kolom van prijs?


Varchar
Dan kan het sorteren best wel eens erg vreemd gaan.

Bijvoorbeeld:
1
2
3000
4

Kies het juiste TYPE.
- SanThe - op 05/08/2014 23:09:28

Dan kan het sorteren best wel eens erg vreemd gaan.

Bijvoorbeeld:
1
2
3000
4

Kies het juiste TYPE.


Ik heb hem nu Op INT staan, dan sorteert ie wel goed alleen heb ik nu problemen met DISTINCT ik krijg 3x hetzelfde product onder elkaar die een andere prijs hebben, ik wil juist dat het 3 verschillende producten zijn die daar staan.
Een DISTINCT geeft altijd alle verschillende waarde (combinaties) voor alle kolommen in de SELECT clause. Dus een rij met product = 1 en prijs = 1, is een andere waarde dan een rij met product = 1 en prijs = 2. Ook al is het hetzelfde product, de prijs is anders, dus zijn de twee rijen niet gelijk.

Wil je alleen alle verschillende producten hebben dan moet je dus alleen de kolom product selecteren en niet de kolom prijs.


En om je volgende vraag voor te zijn: als je dan gaat zeggen 'maar ik wil ook de prijs hebben', dan moet je eens goed gaan nadenken over je probleemstelling. Dat kan namelijk niet, als er verschillende prijzen zijn opgeslagen bij een product kan je niet 'de prijs' ophalen. Je kan alleen 'de prijzen' ophalen en dat is wat er al gebeurde.

SELECT product_id, MAX(prijs) maxprijs 
FROM producten
GROUP BY product_id
ORDER BY maxprijs DESC
LIMIT 3


Dat geeft je de 3 duurste producten

Gaat het om de hoogste prijs voor elk product, dan vervalt die LIMIT regel
Ivo P op 06/08/2014 14:49:29


SELECT product_id, MAX(prijs) maxprijs 
FROM producten
GROUP BY product_id
ORDER BY maxprijs DESC
LIMIT 3


Dat geeft je de 3 duurste producten

Gaat het om de hoogste prijs voor elk product, dan vervalt die LIMIT regel


Ik heb hem nu werkend, bedankt :D

Reageren