Avatar billede vint Nybegynder
28. juli 2008 - 00:11 Der er 4 kommentarer og
1 løsning

SQL string fra flere tabeller

SQL er formentligt ikke et svært sprog, men når man ikke er vant til det, så kan det slå knuder.

Jeg håber, at jeg kan få lidt hjælp til at generere optimal og korrekt SQL. Her er følgende forudsætninger:

Tabel1
ID (pk), integer
Tekst, string
Dato, Dato
Felt1 (fk), integer
Felt2 (fk), integer

tabel 2
ID (pk), integer
beskrivelse, string

Felt1 og felt2 er foreign key til feltet ID i tabel 2, således, at der i tabel 2 er oprettet en række beskrivelser med tilhørende ID-numre og når der så vælges et nummer i felt1 eller felt2, så skal det svare overens med beskrivelsen i tabel 2

Hvordan genererer man noget SQL, hvor jeg får en række data til min tabel, som både indeholder data fra tabel 1 PLUS de korrekte beskrivelser fra tabel 2 i stedet for ID-numrene.

Eksempel:

Tabel 1
1, tekst 1, 010108, 1000, 1000
2, tekst 2, 010108, 2000, 1000
3, tekst 3, 010108, 1000, 4000
4, tekst 4, 010108, 3000, 4000
5, tekst 5, 010108, 2000, 5000

Tabel 2
1000, Mazda
2000, Toyota
3000, Skoda
4000, Volvo
5000, Nissan

Ønsket output fra SQL
1, tekst 1, 010108, Mazda, Mazda
2, tekst 2, 010108, Toyota, Mazda
3, tekst 3, 010108, Mazda, Volvo
4, tekst 4, 010108, Skoda, Volvo
5, tekst 5, 010108, Toyota, Nissan
Avatar billede arne_v Ekspert
28. juli 2008 - 00:18 #1
prøv:

SELECT tabel1.id,tabel1.tekst,tabel1.dato,a.beskrivelse,b.beskrivelse
FROM tabel1,tabel2 a,tabel2 b
WHERE tabel1.felt1=a.id AND tabel1.felt2=b.id
Avatar billede vint Nybegynder
28. juli 2008 - 00:41 #2
Umiddelbart ser det ud til at være løsningen, men har ikke testet den helt. Havde troet, at jeg skulle ud i noget med join osv.
Avatar billede arne_v Ekspert
28. juli 2008 - 00:43 #3
Der er faktisk 2 joins i min SQL. Jeg har bare lavet dem på den gammeldags måde.

Du kunne lave det som:

SELECT tabel1.id,tabel1.tekst,tabel1.dato,a.beskrivelse,b.beskrivelse
FROM (tabel1 JOIN tabel2 a ON tabel1.felt1=a.id) JOIN tabel2 b ON tabel1.felt2=b.id
Avatar billede vint Nybegynder
28. juli 2008 - 22:56 #4
Okay du må gerne svare.
Avatar billede arne_v Ekspert
28. juli 2008 - 23:07 #5
svar
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