Avatar billede lullalej Nybegynder
17. juli 2011 - 14:18 Der er 5 kommentarer og
2 løsninger

Join med 3 tabeller

Hej

Jeg har 3 tabeller:

status_mes:
id,text,subject,status

status_net:
id,name,sub_id

status_mes_net:
id,mes_id,net_id

Jeg søger en query hvor man hiver lige præcis det ud jeg skal bruge.

status_mes_net angiver blot hvilke status_net der er berørt af status_mes.

Jeg skal bruge alle rows fra status_mes, hvor status_net->name er "Byen". Ydermere kan hole status_net have sub_id der svarer til den der indeholder "Byen", de skal også vises.

Håber det er til at forstå? - Samt at nogen vil hjælpe mig..


Jeg går ud fra det er JOIN man skal bruge, men jeg er ikke 100% sikker, jeg har endnu ikke fundet en ordenlig dansk guide til hvordan man bruger den funktion. Og alle jeg har fundet, kan jeg ikke få til at give mening. Så måske det hjælpe hvis jeg ser hvordan det skal se ud, i et tilfælde hvor jeg rent faktisk selv skal bruge det ;)
Avatar billede arne_v Ekspert
17. juli 2011 - 16:27 #1
Det er join du skal bruge.

SELECT *
FROM (status_mes JOIN status_mes_net ON status_mes.id=status_mes_net.mes_id)
JOIN status_net ON status_mes_net.net_id=status_net.id

Ret * til en felt liste for at begraense antallet af kolonner.

Put en WHERE paa for at begraense antallet af raekker.
17. juli 2011 - 16:45 #2
lulalej, det er ikke helt klart hvad du vil.  Du siger, at status_net kan have en sub_id.  Betyder det, at sub_id er tom, er NULL, i nogle rækker?  Hvis ja, så er du nødt til at bruge et 'conditional' udtryk, såsom IFNULL(). 

Jeg fik denne query til at virke i et lille test setop jeg lavede:

SELECT m.*, n.id AS net_id, IFNULL(n.sub_id, '') AS sub_id FROM status_net n JOIN status_mes_net mn ON n.id = mn.net_id JOIN status_mes m ON mn.mes_id = m.id WHERE n.name = 'Byen';
17. juli 2011 - 16:46 #3
Hovsa, jeg så ikke arne_v's indlæg som han lavede mens jeg rodede med mit indlæg.  Men vi synes at være enige, bortset fra, at jeg skærer det lidt mere ud i pap.
Avatar billede lullalej Nybegynder
17. juli 2011 - 17:28 #4
Mange tak til jer begge to, smider I lige et svar hver?

Det tog lige lidt tid at få det til at virke, men det lykkedes da ;)
Avatar billede arne_v Ekspert
17. juli 2011 - 17:53 #5
svar
Avatar billede arne_v Ekspert
17. juli 2011 - 17:55 #6
For en intro til SELECT se evt. http://www.eksperten.dk/guide/389
17. juli 2011 - 18:19 #7
Svar fra mig.
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