30. januar 2004 - 13:28Der er
3 kommentarer og 1 løsning
Styre antal rækker der bliver returneret fra flere tabeller
Hej eksperter !
Jeg har 3 tabeller: BILER, BILTYPER og PRISER
BILER returnere flere rækker, BILTYPER returnere én række per bil og PRISER returnere flere rækker per bil. Mit ønske er at jeg kun får én række fra PRISER per bil – nemlig den nyeste.
Jeg har forsøgt at bruge SELECT DISTINCT og sortere efter et datofelt i PRISER, men det er ikke lykkedes.
Min kode ser pt sådan her ud:
SELECT DISTINCT priser.biler_id, priser.pris, biler.maerke, biler.model, biler.aargang, biler.drivmiddel, biler.km, biler.stelnummer, biler.beskrivelse, biler.status, biltyper.beskrivelse FROM biler, biltyper, priser WHERE priser.biler_id = biler.id AND biltyper.id = biler.biltyper_id ORDER BY biler.id, priser.datotid DESC
Jeg har fundet ud af at der i MySql (v4.1 og senere) findes noget det hedder subquery, men den server jeg ligger på har v3.23 så jeg skal ha den omskrevet til gammel termologi. Det kan lade sig gøre, men det er sikkert meget besværligt.
Den nye kode (altså den til v4.1, som jeg ikke kan bruge) ser således ud:
SELECT biler.id, biler.maerke, biler.model, biler.aargang, biler.drivmiddel, biler.km, biler.stelnummer, biler.beskrivelse, biler.status, biltyper.beskrivelse, priser.pris FROM biler, biltyper, (select biler_id, pris from priser group by datotid limit 1) as priser WHERE biltyper.id = biler.biltyper_id biler.id = priser.biler_id Group BY biler.id
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.