Avatar billede Slettet bruger
17. marts 2005 - 18:59 Der er 1 kommentar og
1 løsning

To tabeller der skal kædes sammen

hej

jeg har to tabeller:

tabel1:
nr_id
firma
adresse


tabel2:
nr_id
beskrivelse_af_firma
dato

problemet er at tabel2 har flere beskrivelser af samme firma. fx:
nr_id i tabel2 kan der være flere der hedder fx 33. Det er fordi der er flere beskrivelser af firmaet (men det er ligegyldigt hvilken man bruger).

hvordan laver jeg et udtræk så den kun tager én af beskrivelserne.

fx
select tabel1.firma, tabel1.adresse, tabel2.beskrivelse_af_firma from tabel1, tabel where tabel1.nr_id=tabel2.nr_id and (pseudo) "tabel2.nr_id.dato=nyeste dato"

det er oracle sql plus. i access ved jeg at man kan bruge aggregat funktionen "first", men det lader ikke til at fungere i oracle. eller evt. få den til at vælge den beskrivelse som er af nyeste dato

mvh
Dennis
Avatar billede Slettet bruger
17. marts 2005 - 20:32 #1
Hvilken Oracle-version kører du? Det kan gøres ret smart i 9i og 10g.
I Oracle8i kan du bruge:

select *
from tabel1 t1, tabel2 t2
where t1.nr_id = t2.nr_id
and t2.dato = (select max(t3.dato) from tabel2 t3 where t3.nr_id = t2.nr_id);

Hvis der er et firma i tabel1, som ikke findes i tabel2, vil den ikke komme med,
du kan så lave en outer join:

select *
from tabel1 t1, tabel2 t2
where t1.nr_id = t2.nr_id (+)
and t2.dato (+) = (select max(t3.dato) from tabel2 t3 where t3.nr_id = t2.nr_id);

eller mere simpelt:

select t1.*
from tabel1 t1, tabel2 t2
where t1.nr_id = t2.nr_id
and t2.dato = (select max(t3.dato) from tabel2 t3 where t3.nr_id = t2.nr_id)
union all
select t1.*
from tabel1 t1
where not exists (select null from tabel2 t2 where t1.nr_id = t2.nr_id);
Avatar billede qualjyn Nybegynder
13. juli 2005 - 08:14 #2
tag og brug den første løsning joern foreslår, da du dermed undgår en union :) og luk spørgsmålet, hvis det virkede
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