繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM