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