1
我有以下语句,它工作正常,除非事实上,如果第二个表没有引用项目的第一个表,它将返回没有结果。SQL查询返回0而不是NULL
我需要的是它返回count(p.match_id) AS matchcount
为0
"SELECT c.*, count(p.match_id) AS matchcount
FROM ci_address_book c LEFT JOIN ci_matched_sanctions p
ON c.id = p.addressbook_id
GROUP BY p.addressbook_id ORDER BY c.id LIMIT ".$offset.",".$num;
部分为真...我的声明{“SELECT c。*,COALESCE(COUNT(p.match_id),0)AS matchcount FROM ci_address_book c LEFT OUTER JOIN ci_matched_sanctions p ON c.id = p.addressbook_id GROUP BY p.addressbook_id ORDER BY c.id LIMIT“。$ offset。”,“。$ num;} ...这将只给我回数量的结果就像我在matching_sanctions表中一样。我的通讯录现在有80个名字。如果matched_sanctions根本没有行,我什么也得不到。如果它有1,我得到1,如果它有2我得到2等... – renevdkooi 2010-11-17 03:59:47
也许换句话说我的q。我有一个名称(地址簿)的表,我有一个表,其中包含匹配。由id引用。所以它是一个多关系。我想计算匹配表中的行数,同时获取地址簿的所有结果。所以我想看到:addressbook_id:1 - name - count – renevdkooi 2010-11-17 04:02:00
SELECT c。*,IFNULL(p.total,0)num FROM ci_address_book c LEFT JOIN(SELECT addressbook_id,COUNT(*)AS total FROM ci_matched_sanctions GROUP BY addressbook_id) AS p ON c.id = p.addressbook_id做了诀窍 – renevdkooi 2010-11-17 04:30:15