SQL Inner-join met 3 tabellen?

Ik probeer 3 tabellen samen te voegen in een view; dit is de situatie:

Ik heb een tabel die informatie bevat van studenten die zich aanmelden om op deze College Campus te wonen. Ik heb een andere tabel die de hal voorkeuren (3 van hen) voor elke student opsomt. Maar elk van deze voorkeuren is slechts een ID-nummer, en het ID-nummer heeft een overeenkomstige halnaam in een derde tabel (ik heb deze database niet ontworpen...).

Vrijwel, ik heb INNER JOIN op de tabel met hun voorkeuren, en hun informatie, het resultaat is iets als ...

 John Doe | 923423 | Incoming Student | 005

Waar 005 de HallID zou zijn. Dus nu wil ik die HallID matchen aan een derde tabel, waar deze tabel een HallID en HallName bevat.

Dus eigenlijk wil ik dat mijn resultaat er zo uitziet als...

 John Doe | 923423 | Incoming Student | Foley Hall <---(INSTEAD OF 005)

Dit is wat ik momenteel heb:

SELECT
  s.StudentID, s.FName, 
  s.LName, s.Gender, s.BirthDate, s.Email, 
  r.HallPref1, r.HallPref2, r.HallPref3
FROM
  dbo.StudentSignUp AS s 
  INNER JOIN RoomSignUp.dbo.Incoming_Applications_Current AS r 
    ON s.StudentID = r.StudentID 
  INNER JOIN HallData.dbo.Halls AS h 
    ON r.HallPref1 = h.HallID
Oplossing

U kunt het volgende doen (ik gokte op tabelvelden, enz.)

SELECT s.studentname
    , s.studentid
    , s.studentdesc
    , h.hallname
FROM students s
INNER JOIN hallprefs hp
    on s.studentid = hp.studentid
INNER JOIN halls h
    on hp.hallid = h.hallid

Gebaseerd op je verzoek voor meerdere zalen zou je het op deze manier kunnen doen. Je join gewoon meerdere keren op je Hall tabel voor elke room pref id:

SELECT     s.StudentID
    , s.FName
    , s.LName
    , s.Gender
    , s.BirthDate
    , s.Email
    , r.HallPref1
    , h1.hallName as Pref1HallName
    , r.HallPref2 
    , h2.hallName as Pref2HallName
    , r.HallPref3
    , h3.hallName as Pref3HallName
FROM  dbo.StudentSignUp AS s 
INNER JOIN RoomSignUp.dbo.Incoming_Applications_Current AS r 
    ON s.StudentID = r.StudentID 
INNER JOIN HallData.dbo.Halls AS h1 
    ON r.HallPref1 = h1.HallID
INNER JOIN HallData.dbo.Halls AS h2
    ON r.HallPref2 = h2.HallID
INNER JOIN HallData.dbo.Halls AS h3
    ON r.HallPref3 = h3.HallID
Commentaren (4)

Als je 3 tabellen hebt met dezelfde ID die samengevoegd moeten worden, dan denk ik dat het als volgt zou gaan:

SELECT * FROM table1 a
JOIN table2 b ON a.ID = b.ID
JOIN table3 c ON a.ID = c.ID

Vervang gewoon * door wat je uit de tabellen wilt halen.

Commentaren (0)

Je hebt alleen een tweede inner join nodig die het ID Nummer dat je nu hebt koppelt aan het ID Nummer van de derde tabel. Daarna vervang je het ID Nummer door de Hall Naam en voilá :)

Commentaren (0)