MySQL多个联接中相同字段的条件

时间:2011-09-13 21:19:24

标签: mysql join

我有一张名为“订单”的表

order_id
customer_name
item

并将其加入另一个名为“orders_requests”的表,其中包含

order_id
requests

“orders”中的一行可能在“order_requests”中有零行或多行。我正在尝试执行查询以查找具有“紧急处理”和“免费送货”的“orders_requests”的“订单”。我倾向于使用左侧的“orders_requests”表进行RIGHT OUTER JOIN,因此如果存在相应的“orders”行,它只会返回结果,但我对这些查询中的任何一个都没有成功。

这个不起作用,因为它会拉出急速处理或免费送货的行。

SELECT DISTINCT orders.order_id, orders.* , 
FROM orders_requests
RIGHT OUTER JOIN orders ON orders_requests.order_id = orders.order_id
WHERE orders_requests.requests
IN ('rush processing', 'free shipping')

这个显然不起作用,因为任何一行都不可能匹配这两个条件。

SELECT DISTINCT orders.order_id, orders.* , 
FROM orders_requests
RIGHT OUTER JOIN orders ON orders_requests.order_id = orders.order_id
WHERE orders_requests.requests = 'rush processing'
AND orders_requests.requests = 'free shipping'

我正在尝试使用我的表格设置,我是否需要更改结构?

1 个答案:

答案 0 :(得分:2)

我不确定这是否有效,因为我无法测试它,但试试这个:

select a.order_id, b.*, c.*
from orders a 
left outer join orders_requests b on b.order_id = a.order_id
left outer join orders_requests c on c.order_id = a.order_id
where b.requests = 'rush processing' and c.requests = 'free shipping'