I'm megpróbálom összekapcsolni 3 táblázatot egy nézetben; itt a helyzet:
Van egy táblázatom, amely a főiskolai kampuszra jelentkező hallgatók adatait tartalmazza: Van egy táblázatom, amely a főiskolai kampuszra jelentkező hallgatók adatait tartalmazza. Van egy másik táblázatom, amely az egyes hallgatók csarnokpreferenciáit (3 darabot) sorolja fel. De ezek a preferenciák mindegyike csupán egy azonosítószám, és az azonosítószámnak van egy megfelelő csarnoknév egy harmadik táblázatban (nem terveztem ezt az adatbázist...).
Nagyjából, van INNER JOIN
a preferenciáikat tartalmazó táblán, és az információik, az eredmény valami ilyesmi...
John Doe | 923423 | Incoming Student | 005
Ahol a 005
a HallID
lenne. Tehát most ezt a HallID
-t egy harmadik táblához akarom rendelni, ahol ez a tábla tartalmazza a HallID
-t és a HallName
-t.
Tehát nagyjából azt akarom, hogy az eredményem olyan legyen, mint...
John Doe | 923423 | Incoming Student | Foley Hall <---(INSTEAD OF 005)
Itt van, ami jelenleg van:
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
A következőket teheti meg (a táblázat mezőire tippeltem, stb.)
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
A több teremre vonatkozó kérésed alapján így is megteheted. Csak többször csatlakozol a csarnok tábládhoz minden egyes szoba pref id-hez:
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
Ha 3 azonos azonosítóval rendelkező tábla van, amelyeket össze kell kapcsolni, akkor szerintem ez így néz ki:
SELECT * FROM table1 a
JOIN table2 b ON a.ID = b.ID
JOIN table3 c ON a.ID = c.ID
Csak helyettesítsd a *
-t azzal, amit a táblákból szeretnél kapni.