【发布时间】:2017-02-26 15:43:56
【问题描述】:
我在这里有一个有点复杂的查询。我必须按名称选择列,而不仅仅是用户的订单。*。因为我有来自不同表的多个同名列。
我要做的是从订单、用户、payment_methods_translation 中选择特定字段并仅在 orders.payment_method_id = '3' 时加入 bank_accounts_translation
SELECT
orders.id as orderid,
orders.final_total,
orders.user_id,
orders.auto_cancel,
users.id as userid,
users.first_name,
payment_methods_translation.payment_method_id,
payment_methods_translation.name
FROM
orders,users,
payment_methods_translation
WHERE
orders.id='$id' AND
orders.user_id = users.id AND
orders.payment_method_id = payment_methods_translation.payment_method_id AND
orders.auto_cancel='1'
JOIN
bank_accounts_translation ON (orders.payment_method_id='3'
AND orders.bank_id = bank_accounts_translation.bank_account_id)
但是我得到一个 mysql 错误。那么,只有当 orders.payment_method_id = '3' 和 orders.bank_id = bank_accounts_translation.bank_id 时,我才能从 bank_accounts_translation 中选择所有字段
【问题讨论】:
-
首先是
join,然后是where(select ... from ... join ... on ... where)。 -
不要混合符号/标准。使用 Inner Join 语法或使用 , 语法。
-
不要使用逗号连接语法。时期。并查看meta.stackoverflow.com/questions/333952/…
标签: mysql if-statement join