SQL Notranje združevanje s 3 tabelami?

Poskušam združiti 3 tabele v pogledu; situacija je takšna:

Imam tabelo, ki vsebuje podatke o študentih, ki se prijavljajo za bivanje v tem kampusu. Imam še eno tabelo, v kateri so za vsakega študenta navedene želje glede dvorane (3). Toda vsaka od teh preferenc je le identifikacijska številka, identifikacijska številka pa ima ustrezno ime dvorane v tretji tabeli (te podatkovne zbirke nisem oblikoval...).

V bistvu imam INNER JOIN na tabeli z njihovimi preferencami in njihovimi podatki, rezultat pa je nekaj takega...

 John Doe | 923423 | Incoming Student | 005

Pri čemer je 005 ID dvorane. Zdaj želim to HallID ujemati s tretjo tabelo, pri čemer ta tabela vsebuje HallID in HallName.

Torej želim, da je moj rezultat takšen...

 John Doe | 923423 | Incoming Student | Foley Hall <---(INSTEAD OF 005)

Tukaj je to, kar imam trenutno:

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
Rešitev

Naredite lahko naslednje (ugibal sem o poljih tabele itd.)

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

Glede na vašo zahtevo po več dvoranah lahko to storite na ta način. Samo se večkrat pridružite tabeli Dvorana za vsak pref id sobe:

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

Če imate 3 tabele z istim ID, ki jih je treba združiti, mislim, da bi bilo to videti takole:

SELECT * FROM table1 a
JOIN table2 b ON a.ID = b.ID
JOIN table3 c ON a.ID = c.ID

Samo zamenjajte * s tistim, kar želite dobiti iz tabel.

Komentarji (0)

Potrebujete le drugo notranje združevanje, ki bo povezalo številko ID, ki jo imate zdaj, s številko ID v tretji tabeli. Nato zamenjajte številko ID z imenom dvorane in voilá :)

Komentarji (0)