SQL Inner-join z 3 tabel?
Próbuję połączyć 3 tabele w widoku; oto sytuacja:
Mam tabelę, która zawiera informacje o studentach, którzy ubiegają się o mieszkanie na tym kampusie. Mam inną tabelę, która wymienia Preferencje Sali (3 z nich) dla każdego ucznia. Jednak każda z tych preferencji jest jedynie numerem ID, a Numer ID ma odpowiadającą mu nazwę hali w trzeciej tabeli (nie zaprojektowano tej bazy danych...).
W zasadzie mam INNER JOIN
na stole z ich preferencje, a ich informacje, wynik jest coś takiego...
John Doe | 923423 | Incoming Student | 005
Gdzie 005
byłoby HallID
. Więc teraz chcę dopasować HallID
do trzeciej tabeli, gdzie ta tabela zawiera HallID
i HallName
.
Tak bardzo, chcę, aby mój wynik był taki...
John Doe | 923423 | Incoming Student | Foley Hall <---(INSTEAD OF 005)
Oto co aktualnie mam:
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
12 answers
Możesz wykonać następujące czynności (domyślam się na polach tabeli itp.)
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
Na podstawie Twojej prośby o wiele hal możesz to zrobić w ten sposób. Po prostu dołączasz do swojego stolika w holu wiele razy dla każdego pokoju 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-22 11:23:52
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-02 02:03:49
Jeśli masz 3 tabele z tym samym ID
do połączenia, myślę, że będzie tak:
SELECT * FROM table1 a
JOIN table2 b ON a.ID = b.ID
JOIN table3 c ON a.ID = c.ID
Po prostu zastąp *
tym, co chcesz uzyskać z tabel.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-08 19:08:16
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-29 12:12:32
Potrzebujesz tylko drugiego wewnętrznego połączenia, które łączy ID Number
, które masz teraz do ID Number
trzeciej tabeli. Następnie zastąp {[0] } przez Hall Name
i voilá:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-17 16:50:52
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;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-12 08:36:05
Było wiele odpowiedzi, ale ogólna lekcja wydaje się być taka, że można użyć wielu złączeń w klauzuli where; także techonthenet.com (mój szef polecił mi go, tak go znalazłem) ma dobre samouczki SQL, jeśli kiedykolwiek będziesz miał inne pytanie i po prostu chcesz spróbować i to rozgryźć.
SELECT table1.column1
FROM table1
WHERE table1 > 0 (or whatever you want to specify)
INNER JOIN table1
ON table1.column1 = table2.column1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-05 22:32:06
Jest to poprawne zapytanie dla tabeli join 3 o tym samym 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';
Pierwszy stół pracownika. zgłoś drugą tabelę. narodziny trzecia tabela
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-03 10:51:09
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-18 04:16:17
To zapytanie będzie działać dla ciebie
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-05 01:02:36
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)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-22 10:36:28
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-26 04:07:01