[英]Join query between 2 tables
我有三个表:
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
。 该表将有一个idColony
(1 idColony
是强制性)从COLONIES
table.But这个REGISTERS
记录/行最多可以有10个额外的idColony
秒。 这就是我分开另一张桌子的原因。
所以我正在做的查询是这样的:
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
. idRegister
= REGISTERS
. id
EXTRA_COLONIES
的记录JOIN
EXTRA_COLONIES
ON EXTRA_COLONIES
. idRegister
= REGISTERS
. id
JOIN
EXTRA_COLONIES
ON EXTRA_COLONIES
. idRegister
= REGISTERS
. id
。 JOIN
EXTRA_COLONIES
ON EXTRA_COLONIES
. idRegister
= REGISTERS
. id
我如何获得所有记录,是否为EXTRA_COLONIES
?
LEFT JOIN
将解决问题。
无论idRegister
中EXTRA_COLONIES
有任何匹配的EXTRA_COLONIES
,都应返回REGISTER
记录
有关MySQL JOIN的更多信息: http : //dev.mysql.com/doc/refman/5.0/en/join.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.