Bir görünümde 3 tabloyu birleştirmeye çalışıyorum; durum şu:
Bu Kolej Kampüsünde yaşamak için başvuran öğrencilerin bilgilerini içeren bir tablom var. Her Öğrenci için Salon Tercihlerini (3 tane) listeleyen başka bir tablom var. Ancak bu tercihlerin her biri yalnızca bir Kimlik Numarasıdır ve Kimlik Numarasının üçüncü bir tabloda karşılık gelen bir Salon Adı vardır (bu veritabanını tasarlamadım...).
Aşağı yukarı, tercihleri ve bilgileri ile tabloda INNER JOIN
var, sonuç şöyle bir şey...
John Doe | 923423 | Incoming Student | 005
Burada 005
, HallID
olacaktır. Şimdi bu HallID
yi, bu tablonun HallID
ve HallName
içerdiği üçüncü bir tabloyla eşleştirmek istiyorum.
Yani hemen hemen, sonucumun şöyle olmasını istiyorum.
John Doe | 923423 | Incoming Student | Foley Hall <---(INSTEAD OF 005)
Şu anda elimde olanlar bunlar:
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
Aşağıdakileri yapabilirsiniz (tablo alanları vb. üzerinde tahmin yürüttüm)
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
Birden fazla salon talebinize dayanarak bu şekilde yapabilirsiniz. Her oda pref kimliği için Salon tablonuza birden çok kez katılmanız yeterlidir:
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
Birleştirilecek aynı ID
ye sahip 3 tablonuz varsa, sanırım bu şekilde olacaktır:
SELECT * FROM table1 a
JOIN table2 b ON a.ID = b.ID
JOIN table3 c ON a.ID = c.ID
Sadece *
yerine tablolardan ne elde etmek istiyorsanız onu yazın.