Avatar billede x4all_dk Nybegynder
16. juni 2004 - 10:50 Der er 12 kommentarer og
1 løsning

Lav "flot" SQL

Hvem kan lave denne forespørgsel elegant ?

tbl1
[id][navn][efternavn]
  1  per  hansen
  2  lars  jensen

tbl2
[tbl1_id][tbl3_id]
    1        2
   
tbl3
[id][by]
  1  Kbh
  2  odense

Forventet resultat:
  navn  eftnavn  by
--------------------------
| per  | hansen | odense |
| lars | jensen |        |
--------------------------

Den skal altså udskrive ALT i tbl1 og også
om de er "koblet" på en by. Er de ikke skal
det også fremgå som enten tomt felt eller NULL.

Hvem kan lave en elegant Query ?

info: MySQL 4.1.18, PHP 4.3.4
Avatar billede arne_v Ekspert
16. juni 2004 - 10:55 #1
[hvorfor spurgte du ikke om det i det andet spørgsmål ??]

SELECT´tbl1.navn,tbl2.navn,tbl3.by
FROM (tbl1 LEFT JOIN tbl2 ON tbl1.id=tbl2.tbl1_id) LEFT JOIN tbl3 ON tbl3.id=tbl2.tbl3_id
Avatar billede x4all_dk Nybegynder
16. juni 2004 - 11:48 #2
Super!  Dette er elegant - jeg har desværre selv en del dårlige vaner
i SQL, så det er godt med lidt "rettelse".

Giv lige et svar!
Avatar billede trumf Nybegynder
16. juni 2004 - 11:49 #3
den vil da ikke virke, da der ikke er et felt med navn i tbl2
Avatar billede trumf Nybegynder
16. juni 2004 - 11:50 #4
og skal der ikke tages højde for at tbl2.id IS NULL så navnet kommer med uden byen
Avatar billede x4all_dk Nybegynder
16. juni 2004 - 11:52 #5
trumf -> arne_v´s svar gør skam hvad jeg har ønsket.
Avatar billede trumf Nybegynder
16. juni 2004 - 11:56 #6
OK, så er alt jo som det skal være :-)

Der ser bare ikke rigtigt ud, da der er select på tbl2.navn og i din illu. er der ikke et felt der hedder navn. Det ville normalt give en fejl.
Jeg har jo heller ikke set det andet spm.
Avatar billede arne_v Ekspert
16. juni 2004 - 11:58 #7
tbl1.efternavn ikke tbl2.navn

SELECT tbl1.navn,tbl1.efternavn,tbl3.by
FROM (tbl1 LEFT JOIN tbl2 ON tbl1.id=tbl2.tbl1_id) LEFT JOIN tbl3 ON tbl3.id=tbl2.tbl3_id
Avatar billede arne_v Ekspert
16. juni 2004 - 11:59 #8
Det havde x4all nok regnet ud.

Pointen var LEFT JOIN.
Avatar billede arne_v Ekspert
16. juni 2004 - 11:59 #9
LEFT JOIN gør nemlig at det påvenstre side kommer med selvom det på højre side er NULL.
Avatar billede arne_v Ekspert
16. juni 2004 - 11:59 #10
svar
Avatar billede trumf Nybegynder
16. juni 2004 - 12:06 #11
arne_v> Jeg påpegede det kun fordi der nogen gange er folk herinde der ikke kan så meget selv og jeg kender ikke til x4all_dk.
Det var ikke for at mase mig ind på dit svar. Jeg skal bare fordrive tiden indtil der er nogen der svarer på mit sidste spm, hvor der er 100 på højkant ;-)
Avatar billede arne_v Ekspert
01. juli 2004 - 21:48 #12
trumf>

Helt OK

x4all>

Tid at lukke spørgsmålet ?
Avatar billede x4all_dk Nybegynder
25. juli 2004 - 17:45 #13
Sommerferie :)

Tak for interessen.

Lukker.
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