MySQL加入三个表,其中两个表具有附加条件

时间:2017-03-16 16:30:39

标签: mysql join

我必须将一个表(bond)与另外两个表(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语句,因为需要类似外连接的东西(一边可能是空的)。什么是正确的方式?

1 个答案:

答案 0 :(得分:2)

尝试将其添加到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