Estoy tratando de unir 3 tablas en una vista; esta es la situación:
Tengo una tabla que contiene información de los estudiantes que solicitan vivir en este Campus Universitario. Tengo otra tabla que lista las Preferencias de Salón (3 de ellas) para cada Estudiante. Pero cada una de estas preferencias es simplemente un número de identificación, y el número de identificación tiene un nombre de sala correspondiente en una tercera tabla (no diseñé esta base de datos...).
Más o menos, tengo INNER JOIN
en la tabla con sus preferencias, y su información, el resultado es algo como...
John Doe | 923423 | Incoming Student | 005
Donde 005
sería el HallID
. Así que ahora quiero que coincida con que HallID
a una tercera tabla, donde esta tabla contiene un HallID
y HallName
.
Así que más o menos, quiero que mi resultado sea como...
John Doe | 923423 | Incoming Student | Foley Hall <---(INSTEAD OF 005)
Esto es lo que tengo actualmente:
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
Puedes hacer lo siguiente (supongo que en los campos de la tabla, etc.)
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
Basado en su solicitud de múltiples salas que podría hacerlo de esta manera. Usted acaba de unirse a su tabla Hall varias veces para cada sala 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
Si tienes 3 tablas con el mismo ID
para unir, creo que sería así:
SELECT * FROM table1 a
JOIN table2 b ON a.ID = b.ID
JOIN table3 c ON a.ID = c.ID
Sólo tienes que sustituir *
por lo que quieras obtener de las tablas.