SQL iekšējais savienojums ar 3 tabulām?

Es mēģinu pievienoties 3 tabulām skatā; šeit ir šāda situācija:

Man ir tabula, kurā ir informācija par studentiem, kas piesakās uz dzīvi šajā koledžas pilsētiņā. Man ir vēl viena tabula, kurā ir uzskaitītas katra studenta priekšroku zāles (3 no tām). Bet katra no šīm preferencēm ir tikai ID numurs, un ID numuram ir atbilstošs zāles nosaukums trešā tabulā (neesmu veidojis šo datubāzi...).

Gluži kā, man ir INNER JOIN uz tabulas ar viņu preferencēm un viņu informāciju, rezultāts ir kaut kas līdzīgs...

 John Doe | 923423 | Incoming Student | 005

kur 005 būtu HallID. Tagad es gribu saskaņot šo HallID ar trešo tabulu, kur šajā tabulā ir HallID un HallName.

Es gribu, lai mans rezultāts būtu šāds...

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

Šeit ir tas, kas man pašlaik ir:

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
Risinājums

Varat veikt šādas darbības (es uzminēju par tabulas laukiem utt.)

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

Pamatojoties uz jūsu pieprasījumu pēc vairākām zālēm, jūs varētu to darīt šādi. Vienkārši vairākas reizes pievienojieties savai halles tabulai katrai telpas 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
Komentāri (4)

Ja jums ir 3 tabulas ar vienādu ID, kas jāapvieno, manuprāt, tas būtu šādi:

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

Vienkārši nomainiet * ar to, ko vēlaties iegūt no tabulām.

Komentāri (0)

Jums ir nepieciešams tikai otrs iekšējais savienojums, kas sasaista tagad iegūto ID numuru ar trešās tabulas ID numuru. Pēc tam nomainiet ID numuru ar Hall Name un voilá :)

Komentāri (0)