Jeg forsøger at sammenføje 3 tabeller i en visning; her er situationen:
Jeg har en tabel, der indeholder oplysninger om studerende, der ansøger om at bo på dette College Campus. Jeg har en anden tabel, der viser Hall Preferences (3 af dem) for hver studerende. Men hver af disse præferencer er blot et ID-nummer, og ID-nummeret har et tilsvarende hallnavn i en tredje tabel (har ikke designet denne database...).
Jeg har stort set INNER JOIN
på tabellen med deres præferencer, og deres oplysninger, resultatet er noget i stil med...
John Doe | 923423 | Incoming Student | 005
Hvor 005
ville være HallID
. Så nu vil jeg matche dette HallID
med en tredje tabel, hvor denne tabel indeholder et HallID
og HallName
.
Så jeg ønsker, at mit resultat skal se ud som...
John Doe | 923423 | Incoming Student | Foley Hall <---(INSTEAD OF 005)
Her er hvad jeg har i øjeblikket:
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
Du kan gøre følgende (jeg gættede på tabelfelter osv.)
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
Baseret på din anmodning om flere haller kunne du gøre det på denne måde. Du skal bare deltage på din Hall tabel flere gange for hvert rum 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
Hvis du har 3 tabeller med samme ID
, der skal sammenføjes, tror jeg, at det vil være sådan her:
SELECT * FROM table1 a
JOIN table2 b ON a.ID = b.ID
JOIN table3 c ON a.ID = c.ID
Du skal blot erstatte *
med det, du vil have fra tabellerne.