2017-03-16 12 views
0

2つのテーブル(orders_bid、orders_ask)と1つのテーブル(債券)を結合する必要があります。しかし、他の両方のテーブルにも条件がなければなりません(customer_idは同じでなければなりません)。MySQL 3つのテーブルを結合し、そのうちの2つは追加条件付き

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 

しかし、これは、行がオーバー混入されている結果につながる:

bonds 
----------- 
id 
ticker 

...

orders_bid 
----------- 
id 
bonds_id 
customer_id 
price 

...

orders_ask 
----------- 
id 
bonds_id 
customer_id 
price 

私のアプローチは以下のとおりです。異なる顧客、customer_idと同じ結合された両方のテーブル間で尊重されません。以下のような何か...

WHERE orders_bid.customer_id=orders_aks.customer_id 

...さらに必要とされているが、それは(1辺が空であるかもしれない)外側のようなものとして、文の参加が必要とされているWHEREあってはなりません。正しい方法は何ですか?

答えて

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 
+0

試してみます。しかし、これは2回目の参加にのみ影響しますか? – JKB

+0

customer_idフィールドを持つもの – McNets

関連する問題