Door
Patrick van veld
op 05-08-2014 22:32
gewijzigd op 05-08-2014 22:33
1.333 views
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.
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.