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
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
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
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.
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
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á :)
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
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
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
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)
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
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;