我有两张表格如下:
Transactions
ID | Buyer | Seller
-------------------
1 | 1 | 2
2 | 1 | 3
3 | 2 | 3
ClientData
ID | Name
---------
1 | John
2 | Terry
3 | Bob
我希望能够运行一个查询,该查询将返回交易ID和客户名称,而不是买方和卖方ID。我知道JOIN将用于此,但我遇到的所有示例似乎都只使用一个相关的ID,这需要在查询中执行两次。 JOIN是正确的方法吗,或者我应该查看查询中的子查询?
SELECT Transactions.ID, Transactions.Buyer, Transactions.Seller
FROM Transactions
INNER JOIN ClientData ON Transactions.Buyer=ClientData.ID
AND Transaction.Seller=ClientData.ID
此查询不返回任何数据,如果我远程
AND Transaction.Seller=ClientData.ID
从查询中它只返回原始的交易数据。以前我只是将原始事务数据读入一个数组,然后我将循环返回数组并手动用客户端名称替换买方和卖方ID,但这非常低效。
答案 0 :(得分:4)
这对你有用吗?
SELECT t.ID, b.Name, s.Name
FROM Transactions t
INNER JOIN ClientData b ON t.Buyer=b.ID
INNER JOIN ClientData s ON t.Seller=s.ID
答案 1 :(得分:1)
我会使用2个连接,一个用于买方,一个用于卖方,如下所示:
SELECT Transactions.ID, BUYER.NAME, SELLER.NAME
FROM transactions T
JOIN Clientdata BUYER
ON T.BUYER=BUYER.ID
JOIN Clientdata SELLER
ON T.SELLER=SELLER.ID