Avatar billede razmuz Nybegynder
30. januar 2004 - 13:28 Der 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
Avatar billede trer Nybegynder
30. januar 2004 - 13:41 #1
Hvis du ikke bruger MySQL så kan du lave en subselect på priser udfra nyeste pris.

Noget i stil med

select min(biler_id) biler_id, min(pris) pris
from priser
group by datotid
having datotid=max(datotid)

den query erstatter du så med tabellen priser i din FROM del - således

FROM biler, biltyper, (select min(biler_id) biler_id, min(pris) pris
from priser
group by datotid
having datotid=max(datotid)) priser WHERE

Der skal nok lige pilles lidt før du får den til at fungere...
Avatar billede razmuz Nybegynder
02. februar 2004 - 20:06 #2
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

Har du en ide til hvordan den skal skrives om?
Avatar billede trer Nybegynder
02. februar 2004 - 21:27 #3
Desværre - tror du skal gøre det delvist i din applikation, dvs. som flere separate sql statements.
Avatar billede razmuz Nybegynder
10. april 2004 - 11:50 #4
!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester