【问题标题】:Take ID from one table and return related name from another table从一个表中获取 ID 并从另一个表中返回相关名称
【发布时间】:2015-12-31 00:36:20
【问题描述】:

下面列出了两个表格:

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 替换为客户名称,但这非常低效。

【问题讨论】:

    标签: mysql join inner-join


    【解决方案1】:

    这对你有用吗?

    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
    

    【讨论】:

    • 这正是我的想法,但无法放入代码中。谢谢!
    【解决方案2】:

    我会使用 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      • 2015-02-06
      相关资源
      最近更新 更多