wake-up-neo.net

SQL Inner-Join mit 3 Tabellen?

Ich versuche, 3 Tabellen in einer Ansicht zu verbinden. Hier ist die Situation:

Ich habe eine Tabelle mit Informationen über Studenten, die sich für ein Leben auf diesem College Campus bewerben. Ich habe eine weitere Tabelle, in der die Hall-Einstellungen (3 davon) für jeden Schüler aufgeführt sind. Jede dieser Einstellungen ist jedoch nur eine ID-Nummer, und die ID-Nummer hat einen entsprechenden Hall-Namen in einer dritten Tabelle (diese Datenbank wurde nicht entworfen ...).

Ziemlich viel, ich habe INNER JOIN auf dem Tisch mit ihren Vorlieben und deren Informationen, das Ergebnis ist so etwas wie ...

 John Doe | 923423 | Incoming Student | 005

Wobei 005 die HallID wäre. Nun möchte ich diese HallID einer dritten Tabelle zuordnen, in der diese Tabelle eine HallID und eine HallName enthält.

So ziemlich, ich möchte, dass mein Ergebnis so ist ...

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

Folgendes habe ich momentan:

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
276
Bob Sanders

Sie können Folgendes tun (habe ich auf Tabellenfelder usw. vermutet)

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

Aufgrund Ihrer Anfrage für mehrere Hallen können Sie dies auf diese Weise tun. Sie müssen sich einfach mehrmals für jede Raum-Prä-ID an Ihrem Hall-Tisch anmelden:

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
435
Taryn
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
41
Lomorng

Wenn Sie 3 Tabellen mit derselben ID haben, die zusammengefügt werden sollen, denke ich, wäre dies so:

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

Ersetzen Sie einfach * durch das, was Sie aus den Tabellen erhalten möchten.

36
aquatorrent
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
4

Sie brauchen nur einen zweiten inneren Join, der den ID Number, den Sie jetzt haben, mit dem ID Number der dritten Tabelle verknüpft. Ersetzen Sie anschließend den ID Number durch den Hall Name und den voilá :)

2
aF.

Es gab viele Antworten, aber die allgemeine Lektion scheint zu sein, dass Sie mehrere JOINS in einer where-Klausel verwenden können. Auch techonthenet.com (mein Chef hat es mir empfohlen, so habe ich es gefunden) hat gute SQL-Tutorials, wenn Sie jemals eine andere Frage haben und Sie es einfach herausfinden wollen. 

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

Dies ist eine korrekte Abfrage für die Join-3-Tabelle mit derselben 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';

mitarbeiter erste Tabelle . Bericht zweite Tabelle . Geburt dritte Tabelle

0
Sri Siva

Diese Abfrage funktioniert für Sie

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
0
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)
0
Eknojor Bd
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
0
p.ajay
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;
0
ashu