Avatar billede segato Nybegynder
07. september 2010 - 20:12 Der er 10 kommentarer og
1 løsning

Join

Jeg har følgende tre tabeller jeg gerne vil joine:

Booking
BookingId    KundeId (PersonId)    BehandlerId
       
Behandler
BehandlerId    PersonId   

Person
PersonId    Navn    Adresse

Men jeg er i tvivl om hvordan man joiner på en tabel som så skal joine på en allerede joinet tabel? Men kort sagt vil jeg have et dataset som giver mig navn på kunde og bahandler ud fra de tre tabeller.
Avatar billede arne_v Ekspert
07. september 2010 - 20:17 #1
SELECT *
FROM (booking JOIN behandler ON booking.behandlerid=behandler.behandlerid)
    JOIN person ON booking.kundeid=person.personid
Avatar billede hrc Mester
07. september 2010 - 21:03 #2
Både behandler og kunde peger ned i person, ikke? Hvis du laver det til et view bliver det nemt at arbejde med:

CREATE VIEW
ON
SELECT p1.personid as kundeid, p1.navn as kunde_navn,
      p1.adresse as kunde_adresse
      p2.behandlerid, p2.navn as behandler_navn,
      p2.adresse as behandler_adresse
FROM booking bo
JOIN behandler be ON (bo.behandlerid = be.behandlerid)
JOIN person p1 ON (bo.kundeid = p1.personid)
JOIN person p2 ON (bo.behandlerid = p2.personid)


Arne (Nu med billede): Har set det før men forstår ikke den opbygning du har for dit select. Hvorfor har du parantes efter "from"?
Avatar billede segato Nybegynder
07. september 2010 - 21:06 #3
Har desværre ikke mulighed for view da jeg ikke kan røre db. Og jo behandler og kunde peger i view.
Avatar billede arne_v Ekspert
07. september 2010 - 21:09 #4
Ah - problemet var at person skulle joines ind to gange - det havde jeg ikke lige faaet med.
Avatar billede arne_v Ekspert
07. september 2010 - 21:10 #5
Jeg saetter ofte de parenteser. Gammel vane - en meget gammel version af MySQL kraevede at de var der.
Avatar billede segato Nybegynder
07. september 2010 - 21:11 #6
Den sidste gjorde det. Tak begge to
Avatar billede segato Nybegynder
07. september 2010 - 21:12 #7
Hov, kan i ikke lige begge ligge et svar.
Avatar billede hrc Mester
07. september 2010 - 21:14 #8
segato: Min oprettelse af viewet var i øvrigt også forkert. Kan du bruge select-delen?

arne: Det jeg ikke kunne lide var from (<tabel1> join <tabel2> ..). Det kunne jeg ikke få til at passe.
Avatar billede hrc Mester
07. september 2010 - 21:15 #9
Jeg kan da prøv'
Avatar billede arne_v Ekspert
07. september 2010 - 21:17 #10
Det maa vist vaere hrc's point.
Avatar billede segato Nybegynder
07. september 2010 - 21:21 #11
Så fik jeg også testet de, det med man kan angive p1, p2 gjorde forskellen. I skal have mange tak begge to.
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