MySql hämta "pris från"?

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Boden
  • 2016-02-08 13:36

Jag har en databas med bilar i.
Jag vill hämta en lista över modeller av ett speciellt märke, och endast få den billigaste av var märke.

Denna queryn funkar till 90%, 8 av 10 bilar visas med lägsta pris, men av någon anledning visas 2 med ett annat.

"SELECT * FROM bilar WHERE brand = '$brand' GROUP BY model ORDER BY price ASC"

Vad gör jag fel?

Tacksam för svar

Ursprungligen av jensm:

Jag har en databas med bilar i.
Jag vill hämta en lista över modeller av ett speciellt märke, och endast få den billigaste av var märke.

Denna queryn funkar till 90%, 8 av 10 bilar visas med lägsta pris, men av någon anledning visas 2 med ett annat.

"SELECT * FROM bilar WHERE brand = '$brand' GROUP BY model ORDER BY price ASC"

Vad gör jag fel?

Tacksam för svar

Om 8 av 10 bilar visas med rätt pris vill jag bara först poängtera att SQL satsen funkar till 80%, inte 90%...

Ärligt talat ser allt rätt ut i mina ögon. Vad har du för datatyp på kolumnen price? Kan det vara fel med värdena?

  • Medlem
  • Boden
  • 2016-02-08 13:55

Price är INT.

Från databasen:

Volvo - V40 - D3 Momentum Business Edition - Manuell - Diesel - 3356	 	 
Volvo - V40 - D2 Your Momentum - Manuell - Diesel - 3070	 	 
Volvo - V40 - T2 Your Kinetic - Manuell - Bensin - 2684

V40 kommer upp som 3356kr.

  • Medlem
  • Boden
  • 2016-02-08 14:10

Jag ser nu att det är det första priset som finns i databasen för de olika modellerna (alltså den med lägst ID) som väljs ut. 80% av modellerna råkade bara ha den billigaste som första.

Något borde alltså vara fel med "GROUP BY model ORDER BY price ASC". Den sorterar inte efter pris.

edit: Resultatet sorteras efter pris efter att unika modeller hittats. Det är inte riktigt vad jag vill åstadkomma. ORDER BY price ASC trodde jag skulle sortera resultatet efter pris, stigande, och sen göra den unik med GROUP BY.

Hur gör jag för att få en unik lista över modeller, där endast den billigaste är med?

OK, där har du något...

Testa att först söka ut bilarna sorterade på pris och använd det resultatet som input till en sökning grupperad på modell.

SELECT * FROM (
SELECT * FROM bilar ORDER BY price ASC
) AS cars WHERE brand = '$brand' GROUP BY model;

Lite osäker på om ovanstående är helt 100:a, men testa gärna...

  • Medlem
  • Boden
  • 2016-02-08 14:27

Det funkar utmärkt. Tack så hemskt mycket för hjälpen

1
Bevaka tråden