Poskušam združiti 3 tabele v pogledu; situacija je takšna:
Imam tabelo, ki vsebuje podatke o študentih, ki se prijavljajo za bivanje v tem kampusu. Imam še eno tabelo, v kateri so za vsakega študenta navedene želje glede dvorane (3). Toda vsaka od teh preferenc je le identifikacijska številka, identifikacijska številka pa ima ustrezno ime dvorane v tretji tabeli (te podatkovne zbirke nisem oblikoval...).
V bistvu imam INNER JOIN
na tabeli z njihovimi preferencami in njihovimi podatki, rezultat pa je nekaj takega...
John Doe | 923423 | Incoming Student | 005
Pri čemer je 005
ID dvorane. Zdaj želim to HallID
ujemati s tretjo tabelo, pri čemer ta tabela vsebuje HallID
in HallName
.
Torej želim, da je moj rezultat takšen...
John Doe | 923423 | Incoming Student | Foley Hall <---(INSTEAD OF 005)
Tukaj je to, kar imam trenutno:
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
Naredite lahko naslednje (ugibal sem o poljih tabele itd.)
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
Glede na vašo zahtevo po več dvoranah lahko to storite na ta način. Samo se večkrat pridružite tabeli Dvorana za vsak pref id sobe:
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
Če imate 3 tabele z istim ID
, ki jih je treba združiti, mislim, da bi bilo to videti takole:
SELECT * FROM table1 a
JOIN table2 b ON a.ID = b.ID
JOIN table3 c ON a.ID = c.ID
Samo zamenjajte *
s tistim, kar želite dobiti iz tabel.