[英]MySQL Join three tables, two of them with additional condition
我必须离开一个表(债券)与其他两个表(orders_bid,orders_ask)的连接。 但是,其他两个表之间也必须有一个条件(customer_id必须相同)。
bonds
-----------
id
ticker
...
orders_bid
-----------
id
bonds_id
customer_id
price
...
orders_ask
-----------
id
bonds_id
customer_id
price
我的方法如下:
SELECT bonds.ticker, orders_bid.price, orders_ask.price FROM bonds
LEFT JOIN orders_bid ON bonds.id=orders_bid.bonds_id
LEFT JOIN orders_ask ON bonds.id=orders_ask.bonds_id
但是,这导致结果行在不同的客户之间变得混杂在一起,因为两个连接的表之间都没有遵循customer_id。 就像是...
WHERE orders_bid.customer_id=orders_aks.customer_id
...是额外需要的,但它一定不能是WHERE语句,因为需要外部联接(一侧可能为空)之类的东西。 正确的方法是什么?
尝试通过将其添加到JOIN条件中。
SELECT bonds.ticker, orders_bid.price, orders_ask.price FROM bonds
LEFT JOIN orders_bid
ON bonds.id = orders_bid.bonds_id
LEFT JOIN orders_ask
ON bonds.id = orders_ask.bonds_id
AND orders_bid.customer_id = orders_ask.customer_id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.