mysql - 从一个表中获取 ID 并从另一个表中返回相关名称

标签 mysql join inner-join

下面列出了两个表格:

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

最佳答案

这对你有用吗?

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

关于mysql - 从一个表中获取 ID 并从另一个表中返回相关名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34539421/

相关文章:

MySql查询连接返回结果为空列

mysql - 如何在一个 MySQL 查询中查询人与人之间的 2 级联系?

SQL更新查询结果

php - "Triple Join"?? INNER-JOIN 是否可以添加 'l query after ' WHERE' 以排除第三个表中的行?

mySQL LIMIT OFFSET 不适用于更新

php - 在php中创建基于register的数据库驱动的用户主页

mysql - 多对多表 JOIN

php - mysqli_multi_query 数据库类错误

php - 我如何为帐户创建定时禁令? (PHP/MySQL)

node.js - 在自定义字段上使用两个 JOIN 对查询进行 Sequelize