0

我有三张桌子:

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
...
...

我有一张名为 eg 的桌子REGISTER。该表将有一个表中的idColony(1idColony是强制性的)。COLONIES但是这个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

此查询的问题在于,它仅获取EXTRA_COLONIES 因链接而具有的记录。JOIN EXTRA_COLONIES ON EXTRA_COLONIES.idRegister = REGISTERS.id

我怎样才能得到所有的记录,EXTRA_COLONIES或者不?

4

1 回答 1

1

LEFT JOIN将解决问题。

无论在 中是否有任何匹配idRegister,都应返回EXTRA_COLONIES来自的记录REGISTER

有关 MySQL JOIN 的更多信息:http: //dev.mysql.com/doc/refman/5.0/en/join.html

于 2013-11-01T02:05:07.220 回答