Avatar billede x4all_dk Nybegynder
10. juni 2004 - 10:54 Der er 3 kommentarer og
2 løsninger

Hvordan laves denne SQL "flottest"

Jeg har 3 tabeller og søger den pæneste SQL til at retunere resultatet.

tabel_1
[id_tabel_1][navn]
  1          per
  2            .
  3            .

tabel_2
[id_tabel_1][id_tabel_3]
  1            2
  1            1
  2            3
  .
  .
tabel_3
[id_tabel_1][efternavn]
      1        hansen
      2        jensen
      3        poulsen

Så givet et [navn] vil jeg gerne via tabel_2 slå op i
tabel_3 finde de efternavne som passer på forespørgslen.

I eksemplet skal "per" give efternavnene "hansen" og "jensen".

Jeg kan sagtens lave en SLQ som retunerer dette, men jeg søger den pæneste SQL.  Jeg regner med at noget JOIN af en art kan gøre det smukt...  Den pæneste SQL vinner point.
Avatar billede x4all_dk Nybegynder
10. juni 2004 - 10:58 #1
Lige lidt info:
Jeg bruger MySQL 4.0.18,
så svar vedrørende Mysql 3.x.x eller 4.1.x kan ikke bruges.
Avatar billede proaccess Nybegynder
10. juni 2004 - 15:08 #2
SELECT tabel_1.navn, tabel_3.efternavn
FROM tabel_1, tabel_2, tabel_3
WHERE tabel_1.id_tabel_1=tabel_2.id_tabel_1 AND tabel_2.id_tabel_3=tabel_3.id_tabel_1
Avatar billede arne_v Ekspert
10. juni 2004 - 18:55 #3
Som proaccess:

SELECT tabel3.efternavn
FROM tabel_1,tabel_2,tabel_3
WHERE tabel_1.id_tabel_1=tabel_2.id_tabel_1 AND tabel_2.id_tabel_3=tabel_3.id_tabel_3 AND tabel1.navn='per'

eller ved hjælp af JOIN:

SELECT tabel3.efternavn
FROM ((tabel_1
    JOIN tabel_2 ON tabel_1.id_tabel_1=tabel_2.id_tabel_1)
    JOIN tabel_3 ON tabel_2.id_tabel_3=tabel_3.id_tabel_3
WHERE tabel1.navn='per'

Hvad man synes er pænest er smag og behag.
Avatar billede x4all_dk Nybegynder
16. juni 2004 - 10:42 #4
hmm... jeg havde forventet at en med JOIN af en art ville blive pænere.
Nå men så må jeg komme på en anden Query.

Den pæneste er altså i dette tilfælde den "nemme" query som jeg selv
kunne konstruerer.

I deler point.

- så smid et svar arne_v
Avatar billede arne_v Ekspert
16. juni 2004 - 10:48 #5
ok
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