373

ビューで3つのテーブルを結合しようとしています。これが状況です:

この大学のキャンパスに住むことを申し込んでいる学生の情報を含むテーブルがあります。各学生のホール設定(そのうちの3つ)をリストした別の表があります。ただし、これらの各設定は単なるID番号であり、ID番号には3番目のテーブルに対応するホール名があります(このデータベースを設計していません...)。

ほとんど、私はINNER JOIN彼らの好みと彼らの情報をテーブルに置いています、結果は次のようなものです...

 John Doe | 923423 | Incoming Student | 005

はどこ005になりますかHallID。そこで、これを3番目のテーブルに一致させたいと思います。HallIDこのテーブルにはとが含まれていHallIDますHallName

とてもかなり、私は私の結果が次のようになりたいです...

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

これが私が現在持っているものです:

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
4

12 に答える 12

551

あなたは次のことができます(私はテーブルフィールドなどで推測しました)

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

複数のホールのリクエストに基づいて、この方法でそれを行うことができます。部屋の設定ごとに、ホールテーブルに複数回参加するだけです。

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
于 2012-04-17T16:59:23.410 に答える
56

同じものを結合するテーブルが3つある場合ID、次のようになります。

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

*テーブルから取得したいものに置き換えるだけです。

于 2012-04-17T16:50:08.120 に答える
47
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
于 2013-04-02T01:46:22.077 に答える
7
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
于 2015-12-29T11:33:53.940 に答える
3

ID Number現在持っているものをID Number3番目のテーブルのにリンクする2番目の内部結合が必要です。その後、とを置き換えID NumberますHall Name:)

于 2012-04-17T16:50:52.170 に答える
3
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;
于 2017-07-12T06:59:04.663 に答える
2

たくさんの回答がありましたが、全体的な教訓は、where句で複数のJOINSを使用できるということのようです。また、techonthenet.com(上司が私に勧めてくれたので、私はそれを見つけました)には、別の質問があり、それを理解したい場合に備えて、優れたSQLチュートリアルがあります。

SELECT table1.column1
FROM table1
WHERE table1 > 0 (or whatever you want to specify)
INNER JOIN table1 
ON table1.column1 = table2.column1
于 2018-12-05T22:14:18.680 に答える
1

これは、同じIDの結合3テーブルに対する正しいクエリです**

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';

従業員の最初のテーブル。2番目のテーブルを報告します。出生3番目のテーブル

于 2015-02-03T10:33:05.003 に答える
1
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
于 2018-02-18T03:57:53.800 に答える
1

このクエリはあなたのために働きます

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
于 2018-03-05T01:02:36.607 に答える
1
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)
于 2019-05-22T10:35:02.700 に答える
-5
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
于 2015-03-25T22:10:06.380 に答える