prijs van laag naar hoog
Ik heb de onderstaande query maar krijg de prijzen niet goed van laag naar hoog te zien. Bijvoorbeeld:
de lijst geeft volgende prijzen:
€ 0,25
€ 0,19
€ 0,24
In plaats van:
€ 0,19
€ 0,24
€ 0,25
Hoe kan dit? Wat doe ik verkeerd in mijn query?
de lijst geeft volgende prijzen:
€ 0,25
€ 0,19
€ 0,24
In plaats van:
€ 0,19
€ 0,24
€ 0,25
Hoe kan dit? Wat doe ik verkeerd in mijn query?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$query = "
SELECT u.user_name, u.country, u.user_level, p.productID, p.categoryID, p.subcategoryID, p.productNAME, p.productPRICE, DATE_FORMAT(p.createDATUM,'%d %b') as createDATUM_formatted, p.createTIJD, p.businessprotection, p.VAT, p. VATclass, p.currency, p.totalMinimum, p.pricePer, p.pricePerOne, p.moreInStock, p.remarks, p.what, p.fotoProduct1, p.unitSet
FROM users AS u JOIN product AS p
ON u.id = p.usersID
WHERE p.pricePerOne > '0,01'
ORDER BY pricePerOne+00 DESC, ' . $country . ' LIMIT $offset, $limit
";
?>
$query = "
SELECT u.user_name, u.country, u.user_level, p.productID, p.categoryID, p.subcategoryID, p.productNAME, p.productPRICE, DATE_FORMAT(p.createDATUM,'%d %b') as createDATUM_formatted, p.createTIJD, p.businessprotection, p.VAT, p. VATclass, p.currency, p.totalMinimum, p.pricePer, p.pricePerOne, p.moreInStock, p.remarks, p.what, p.fotoProduct1, p.unitSet
FROM users AS u JOIN product AS p
ON u.id = p.usersID
WHERE p.pricePerOne > '0,01'
ORDER BY pricePerOne+00 DESC, ' . $country . ' LIMIT $offset, $limit
";
?>
Om te beginnen:
pricePerOne+00 DESC
Dit sorteert het nu aflopend (descending), terwijl van laag naar hoog oplopend is (ascending). Je moet dus ASC gebruiken.
Maar daarnaast doet dit met huiveren:
WHERE p.pricePerOne > '0,01'
Zie ik daar dat je het als een string hebt opgeslagen? In dat geval kan je er vrees ik weinig meer aan doen. Want hoe staan de waardes dan in de database? '0,19', ',25' etc? Opslaan als float dus.
pricePerOne+00 DESC
Dit sorteert het nu aflopend (descending), terwijl van laag naar hoog oplopend is (ascending). Je moet dus ASC gebruiken.
Maar daarnaast doet dit met huiveren:
WHERE p.pricePerOne > '0,01'
Zie ik daar dat je het als een string hebt opgeslagen? In dat geval kan je er vrees ik weinig meer aan doen. Want hoe staan de waardes dan in de database? '0,19', ',25' etc? Opslaan als float dus.
Dan zou ik aanraden dat je die tabel exporteert, het type op float zet (ofwel werk je in eurocent; dan kan je met integer werken) en de gegevens terug importeert in het juiste formaat.
Daarna kan je sorteren zoals je wil.
Daarna kan je sorteren zoals je wil.