sql Minimum probleem
De tabel ziet er als volgt uit.
offerte_id vervoerderid prijs
4478 447 477
4478 482 477,40
4478 411 418,70
4478 411 418,70
Ik gebruik onderstaande query:
Code (php)
1
2
3
2
3
<?
SELECT min(prijs)AS minprijs, vervoerderid, offerteid, offerteprijzenid FROM offerteprijzen WHERE offerteid = $_GET[offerte_id] GROUP BY prijs
?>
SELECT min(prijs)AS minprijs, vervoerderid, offerteid, offerteprijzenid FROM offerteprijzen WHERE offerteid = $_GET[offerte_id] GROUP BY prijs
?>
Dit levert:
offerte_id vervoerderid minprijs
4478 411 418,70
4478 447 477
4478 482 477,40
Het enige wat ik wil is dat A) de goedkoopte prijs uitgefilterd wordt B) maximaal 1 record geselecteerd wordt in geval van 2x de zelfde prijs. Wat doe ik fout, anybody??
Dat er landen zijn waar men decimalen met een komma WEERGEEFT, staat daar helemaal los van.
Oplossing: Gebruik een DECIMAL(10,2) en gebruik een punt om de decimalen te scheiden.
Edit: Verder is de query ook gewoon fout. Je kunt van een groep (GROUP BY) uitsluitend eigenschappen van de hele groep opvragen en dus niet van een individueel record. Zelfs niet als er slechts 1 record is, dan loop je nog steeds het risico dat er een tweede record bij komt. Het vervoerder_id is zo'n eigenschap die je dus niet kunt opvragen.
MySQL slikt dit helaas wel en doet gewoon een gok naar de gegevens die jij op het scherm wilt hebben. Daar heb je echter niets aan en dit kan per keer verschillen. Gebruik aparte queries om deze gegevens op te vragen.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Frank, thanks voor je antwoord. Alleen heb ik de variabele vervoerder_id nodig om in een andere tabel te kijken welke NAW hierbij horen. Moet dit dan via een subquery ofzo?!
Code (php)
1
2
3
4
5
6
2
3
4
5
6
SELECT
vervoerderid
FROM
offerteprijzen
WHERE
prijs = (SELECT min(prijs) FROM offerteprijzen WHERE offerteid = $_GET['offerteid'])
vervoerderid
FROM
offerteprijzen
WHERE
prijs = (SELECT min(prijs) FROM offerteprijzen WHERE offerteid = $_GET['offerteid'])
Niet getest, maar hiermee zou het volgens mij moeten lukken. Je hebt wel minimaal MySQL versie 4.1 nodig. Maar dat lijkt mij een algemene eis, met oudere zooi wil je echt niet werken.