sql Minimum probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marco

Marco

17/10/2006 14:55:00
Quote Anchor link
Tabel ziet er zo uit:
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
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??
 
PHP hulp

PHP hulp

18/11/2024 14:36:12
 
Frank -

Frank -

17/10/2006 15:05:00
Quote Anchor link
418,70 ziet er niet uit als een DECIMAL (dus een getal) maar als een stuk tekst. En daar heb je geen ene donder aan. Een DECIMAL eist dat de decimalen door een punt worden gescheiden, geheel volgens de standaard methode om iets met decimalen te doen.

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 -
 
Marco

Marco

17/10/2006 15:23:00
Quote Anchor link
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?!
 
Frank -

Frank -

17/10/2006 15:37:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT
  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.
 
Marco

Marco

17/10/2006 18:44:00
Quote Anchor link
Frank, ik bleef maar kloten met de subquery die maar niet wilde werken. Klopt het dat dit komt door MYSQL 4.0.25 op de server????????

check: www.bussite.nl/test.php voor phpinfo()
 



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.