I'm versuchen, 3 Tabellen in einer Ansicht zu verbinden; hier ist die Situation:
Ich habe eine Tabelle, die Informationen über Studenten enthält, die sich für einen Wohnheimplatz an diesem College Campus bewerben. Ich habe eine weitere Tabelle, die die Wohnheimpräferenzen (3 Stück) für jeden Studenten auflistet. Aber jede dieser Präferenzen ist nur eine ID-Nummer, und die ID-Nummer hat einen entsprechenden Hallennamen in einer dritten Tabelle (ich habe diese Datenbank nicht entworfen...).
Ziemlich genau, ich habe INNER JOIN
auf der Tabelle mit ihren Präferenzen, und ihre Informationen, das Ergebnis ist etwas wie...
John Doe | 923423 | Incoming Student | 005
Wobei 005
die HallID
wäre. Nun möchte ich diese "HallID" mit einer dritten Tabelle abgleichen, wobei diese Tabelle eine "HallID" und einen "Hallennamen" enthält.
Ich möchte also, dass mein Ergebnis ungefähr so aussieht...
John Doe | 923423 | Incoming Student | Foley Hall <---(INSTEAD OF 005)
Hier ist, was ich derzeit habe:
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
Sie können Folgendes tun (ich habe auf Tabellenfelder etc. getippt)
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
Basierend auf Ihrer Anfrage nach mehreren Hallen könnten Sie es so machen. Verknüpfen Sie einfach Ihre Tabelle "Hall" mehrmals für jede Raumvorgaben-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
Wenn Sie 3 Tabellen mit der gleichen "ID" haben, die verbunden werden sollen, würde es folgendermaßen aussehen:
SELECT * FROM table1 a
JOIN table2 b ON a.ID = b.ID
JOIN table3 c ON a.ID = c.ID
Ersetzen Sie einfach *
mit dem, was Sie aus den Tabellen erhalten möchten.