SQL Inner-join met 3 tabellen?

Ik probeer 3 tabellen samen te voegen in een view; hier is de situatie:

Ik heb een tabel met informatie over studenten die zich aanmelden om op deze College Campus te gaan wonen. Ik heb nog een tabel met de Hall-voorkeuren (3 ervan) voor elke student. Maar elk van deze voorkeuren is slechts een ID-nummer, en het ID-nummer heeft een overeenkomstige Hall-naam in een derde tabel (niet ontworpen deze database…).

Zo ongeveer, ik heb INNER JOIN op tafel liggen met hun voorkeuren en hun informatie, het resultaat is zoiets als…

 John Doe | 923423 | Incoming Student | 005

Waar 005 de HallID zou zijn. Dus nu wil ik die HallID koppelen aan een derde tabel, waar deze tabel een HallID en HallName bevat.

Zo ongeveer, ik wil dat mijn resultaat is als…

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

Dit is wat ik momenteel heb:

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

Antwoord 1, autoriteit 100%

U kunt het volgende doen (ik vermoedde op tabelvelden, enz.)

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

Op basis van uw aanvraag voor meerdere zalen zou u het op deze manier kunnen doen. Je neemt gewoon meerdere keren deel aan je Hall-tafel voor elke kamervoorkeur:

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

Antwoord 2, autoriteit 10%

Als je 3 tafels hebt met dezelfde ID om mee te doen, denk ik dat het als volgt zou zijn:

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

Vervang gewoon * door wat je uit de tabellen wilt halen.


Antwoord 3, autoriteit 9%

SELECT column_Name1,column_name2,......
  From tbl_name1,tbl_name2,tbl_name3
  where tbl_name1.column_name = tbl_name2.column_name 
  and tbl_name2.column_name = tbl_name3.column_name

Antwoord 4

SELECT table1.col,table2.col,table3.col 
FROM table1 
INNER JOIN 
(table2 INNER JOIN table3 
ON table3.id=table2.id) 
ON table1.id(f-key)=table2.id
AND //add any additional filters HERE

Antwoord 5

Je hebt alleen een tweede inner join nodig die het ID Number dat je nu hebt koppelt aan het ID Number van de derde tabel. Vervang daarna het ID Number door de Hall Name en voila 🙂


Antwoord 6

SELECT * 
FROM 
    PersonAddress a, 
    Person b,
    PersonAdmin c
WHERE a.addressid LIKE '97%' 
    AND b.lastname LIKE 'test%'
    AND b.genderid IS NOT NULL
    AND a.partyid = c.partyid 
    AND b.partyid = c.partyid;

Antwoord 7

Er zijn veel reacties geweest, maar de algemene les lijkt te zijn dat je meerdere JOINS kunt gebruiken in een waar-clausule; ook techonthenet.com (mijn baas heeft het me aanbevolen, zo heb ik het gevonden) heeft goede SQL-tutorials als je ooit een andere vraag hebt en je wilt het gewoon proberen uit te zoeken.

SELECT table1.column1
FROM table1
WHERE table1 > 0 (or whatever you want to specify)
INNER JOIN table1 
ON table1.column1 = table2.column1

Antwoord 8

Dit is de juiste vraag voor join 3-tabel met dezelfde id**

select a.empname,a.empsalary,b.workstatus,b.bonus,c.dateofbirth from employee a, Report b,birth c where a.empid=b.empid and a.empid=c.empid and b.empid='103';

werknemer eerste tafel.
tweede tafel melden.
geboorte derde tafel


Antwoord 9

SELECT 
A.P_NAME AS [INDIVIDUAL NAME],B.F_DETAIL AS [INDIVIDUAL FEATURE],C.PL_PLACE AS [INDIVIDUAL LOCATION]
FROM 
[dbo].[PEOPLE] A
INNER JOIN 
[dbo].[FEATURE] B ON A.P_FEATURE = B.F_ID
INNER JOIN 
[dbo].[PEOPLE_LOCATION] C ON A.P_LOCATION = C.PL_ID

Antwoord 10

Deze zoekopdracht werkt voor u

Select b.id as 'id', u.id as 'freelancer_id', u.name as 
'free_lancer_name', p.user_id as 'project_owner', b.price as 
'bid_price', b.number_of_days as 'days' from User u, Project p, Bid b 
where b.user_id = u.id and b.project_id = p.id

Antwoord 11

select products.product_id, product_name, price, created_at, image_name, categories.category_id, category_name,brands.brand_id, brand_name 
FROM products INNER JOIN categories USING (category_id) INNER JOIN brands USING(brand_id)

Antwoord 12

select empid,empname,managename,[Management ],cityname  
from employees inner join Managment  
on employees.manageid = Managment.ManageId     
inner join CITY on employees.Cityid=CITY.CityId
id name  managename  managment  cityname
----------------------------------------
1  islam   hamza       it        cairo

LEAVE A REPLY

Please enter your comment!
Please enter your name here

17 − eight =

Other episodes