1

その質問は意味がありますか?

同じテーブルの JOIN から 2 つの異なる値を取得するクエリを実行しようとしています。

「TakenBy」と「PackedBy」の 2 つの値がある「Order」があります。これらは、Employees のテーブルの User_ID です。ほとんどの場合、それらは同じではありません。

クエリでそれらを分離するにはどうすればよいですか? そのうちの 1 つをうまく取得できますが、両方の値を取得する方法がわかりません。

ここに私が持っているものがあります..

SELECT
O.Order_ID AS OID, Customer_ID AS CID, Emp.UserName AS UserName
FROM Orders O
LEFT JOIN Employees Emp ON Emp.User_ID = O.User_ID
WHERE O.Customer_ID =3

しかし、「PackedBy」が必要な場合はどうでしょうか。また、どうすればそれを取得できますか?

[Employees Table]
[User_ID] [UserName]
[1]       [Joe]
[2]       [Bill]
[3]       [Bobby]
[4]       [Steve]

[Orders]
[Order_ID] [Customer_ID] [TakenBy] [PackedBy]
[10]       [55]          [3]       [1]
[11]       [66]          [2]       [4]
[12]       [77]          [3]       [4]
[13]       [88]          [2]       [1]

クエリが次のようなものを返すようにしたい

[OID]   [CID]   [TAKER] [PACKER]
[11]    [66]    [Bill]  [Steve]
4

2 に答える 2

2

異なるテーブルエイリアスを使用する場合、同じテーブルを複数回結合する可能性があります。

例えば:

SELECT
O.Order_ID AS OID, Customer_ID AS CID, 
   EmpP.UserName AS Packer,
   EmpT.UserName AS Taker

FROM Orders O
LEFT JOIN Employees EmpP ON Emp.User_ID = O.PackedBy
LEFT JOIN Employees EmpT ON Emp.User_ID = O.TakenBy
WHERE O.Customer_ID =3
于 2012-08-19T20:59:57.777 に答える
1

従業員の役割ごとに1つずつ、合計2つの結合が必要です。

SELECT O.Order_ID AS OID, Customer_ID AS CID, Emp.UserName AS UserName,
       packed.UserName as PackedBy
FROM Orders O LEFT JOIN
     Employees Emp
     ON Emp.User_ID = O.User_ID left join
     Employees Packed
     on Packed.User_id = o.PackedBy
WHERE O.Customer_ID =3
于 2012-08-19T21:00:06.373 に答える