Mysql查询:
SELECT
customer.full_name,
transaction.transaction_amount,
transaction.id,
merchant.shop_name
FROM
customers customer,
customers_transaction_details transaction,
users merchant
WHERE
transaction.merchant_id = 1 AND transaction.customer_id = customer.id
我正在尝试加入由customers
,customers_transaction_details
和users
组成的三个表格。
customers_transaction_details
包含两个外键:来自customers表的customer_id
和来自users表的merchant_id
。
基于上述查询的结果:
右边应该只有4条记录。前4个记录是正确的,但重复的是121,131,141和151没有商店名称。我该如何解决这个问题?
答案 0 :(得分:1)
这将解决它:
WHERE
transaction.merchant_id = merchant.id AND transaction.customer_id = customer.id AND merchant.id = 1
只需要一个条件来映射transaction
和users
表。单独设置transaction.merchant_id=1
是不够的,因为users
表保持无限制。
但不要那样做!
该查询中的连接语法已过时,并且已经超过20年。写这样的联接:
SELECT
customer.full_name,
transaction.transaction_amount,
transaction.id,
merchant.shop_name
FROM customers customer
INNER JOIN customers_transaction_details transaction ON transaction.customer_id = customer.id
INNER JOIN users merchant ON transaction.merchant_id = merchant.id
WHERE transaction.merchant_id = 1 AND