TABLE tb1
id somevalue
1 999
2 999
3 999
4 998
TABLE tb2
tb1_id other_irrelevant_fields
3 ...
3 ...
3 ...
我想在一个查询中获取tb1的字段,其中somevalue = 999,而tb2的COUNT(*)其中tb1_id = tb1.id。
基本上将这2个查询加入1:
1. SELECT * FROM tb1 WHERE somevalue = 999
foreach row selected:
2. SELECT COUNT(*) from tb2 WHERE tb1_id = <id of tb1>
RESULT
id somevalue COUNT(*)
1 999 0
2 999 0
3 999 3
答案 0 :(得分:2)
如果你想要表1中的所有记录而不管表2中是否匹配,你需要使用LEFT-JOIN ...并且计数应该基于在第二个表中查找记录。
select
tb1.id,
tb1.somevalue,
count( tb2.tb1_id ) as Tbl2Records
from
tb1
LEFT JOIN tb2
on tb1.id = tb2.tb1_id
where
tb1.somevalue = 999
group by
tb1.id,
tb1.somevalue
答案 1 :(得分:0)
SELECT tb1.*, count(tb2.*)
FROM tb1
LEFT JOIN tb2
ON tb1.id=tb2.tb1_id
WHERE tb1.somevalue = 999
GROUP BY tb1.id