SQL 3 tablo ile Inner-join?

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 HallIDyi, 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
Çözüm

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
Yorumlar (4)

Birleştirilecek aynı IDye 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.

Yorumlar (0)

Şu anda sahip olduğunuz Kimlik Numarasını üçüncü tablonun Kimlik Numarasına bağlayan ikinci bir iç birleştirmeye ihtiyacınız var. Daha sonra, Kimlik NumarasıSalon Adı ile değiştirin ve voilá :)

Yorumlar (0)