17. marts 2005 - 18:59Der 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
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
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);
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
Synes godt om
Ny brugerNybegynder
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.