2013-10-31 117 views
0

之間查詢我有三個表:加入2個表

REGISTERS 
------------------ 
id, name, idColony 
------------------ 
1 , some, 3 
2 , othe, 6 
3 , sann, 3 
------------------ 

EXTRA_COLONIES 
------------------ 
id, idRegister, idColony 
------------------ 
1, 1, 4 
2, 1, 5 
3, 2, 8 
----------------- 

COLONIES 
------------------ 
1, some_colony 
2, another_colony 
... 
... 

我有一個例如被稱爲表REGISTER。 該表格將有COLONIESidColony(1 idColony爲必填項)。但此REGISTERS記錄/行最多可以有10個額外的idColony s。這是我分開到另一張桌子的原因。

所以我做的查詢是這樣的:

SELECT table1.field,table2.field... 
FROM (`REGISTERS`) 
JOIN `EXTRA_COLONIES` ON `EXTRA_COLONIES`.`idRegister` = `REGISTERS`.`id` 
WHERE (REGISTERS.idColony = '1' or EXTRA_COLONIES.idColony = '1') 
GROUP BY `REGISTERS`.`id` 
LIMIT 30 

與此查詢的問題是,得到只是因爲鏈接JOIN EXTRA_COLONIES ON EXTRA_COLONIES的有EXTRA_COLONIES 記錄。 idRegister = REGISTERSid

我如何獲得所有記錄,EXTRA_COLONIES

+0

在查詢 – AgRizzo

回答

1

LEFT JOIN將解決問題。

的任何匹配EXTRA_COLONIESidRegister無論從REGISTER記錄應當返還

更多關於MySQL的JOIN: http://dev.mysql.com/doc/refman/5.0/en/join.html

+0

這就是解決方案替換'和'LEFT JOIN' JOIN',謝謝你們兩個人。在離開之前我從未使用過,我從來沒有必要使用它。 –