Sto cercando di unire 3 tabelle in una vista; ecco la situazione:
Ho una tabella che contiene le informazioni degli studenti che stanno facendo domanda per vivere in questo campus universitario. Ho un'altra tabella che elenca le preferenze di Hall (3 di loro) per ogni studente. Ma ognuna di queste preferenze è semplicemente un Numero ID, e il Numero ID ha un corrispondente Nome della Hall in una terza tabella (non ho progettato questo database...).
Più o meno, ho INNER JOIN
sulla tabella con le loro preferenze, e le loro informazioni, il risultato è qualcosa come...
John Doe | 923423 | Incoming Student | 005
Dove 005
sarebbe il HallID
. Quindi ora voglio abbinare quel HallID
a una terza tabella, dove questa tabella contiene un HallID
e un HallName
.
Quindi, più o meno, voglio che il mio risultato sia come...
John Doe | 923423 | Incoming Student | Foley Hall <---(INSTEAD OF 005)
Ecco quello che ho attualmente:
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
Puoi fare quanto segue (ho indovinato sui campi della tabella, ecc.)
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
In base alla tua richiesta di sale multiple potresti farlo in questo modo. Devi solo unirti alla tua tabella Hall più volte per ogni id di camera pref:
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
Se hai 3 tabelle con lo stesso ID
da unire, penso che sarebbe così:
SELECT * FROM table1 a
JOIN table2 b ON a.ID = b.ID
JOIN table3 c ON a.ID = c.ID
Basta sostituire *
con quello che vuoi ottenere dalle tabelle.