双连接mysql查询
我有3个表,但我只能加入另一个表计数。见下文。 下面的一个很有魅力,但我需要从另一个表中添加另一个计数 第三个表名为ci_nomatch,包含对ci_address_book.reference的引用 它可能有多个条目,但我只需要该表的计数 所以如果ci_address_book有一个名为item1,item2,item3的条目 ci_nomatch将有1,item1,user1,2,item1,user4 我想为查询中的Item1返回2 有什么想法吗?我尝试了另一个连接,但它告诉我引用不存在,而它确实存在双连接mysql查询,sql,mysql,Sql,Mysql,我有3个表,但我只能加入另一个表计数。见下文。 下面的一个很有魅力,但我需要从另一个表中添加另一个计数 第三个表名为ci_nomatch,包含对ci_address_book.reference的引用 它可能有多个条目,但我只需要该表的计数 所以如果ci_address_book有一个名为item1,item2,item3的条目 ci_nomatch将有1,item1,user1,2,item1,user4 我想为查询中的Item1返回2 有什么想法吗?我尝试了另一个连接,但它告诉我引用不存在,
SELECT c.*, IFNULL(p.total, 0) AS matchcount
FROM ci_address_book c
LEFT JOIN (
SELECT addressbook_id, COUNT(match_id) AS total
FROM ci_matched_sanctions
GROUP BY addressbook_id
) AS p
ON c.id=p.addressbook_id
ORDER BY matchcount DESC
LIMIT 0,15
您可以在select中直接子查询它
SELECT c.*, IFNULL(p.total, 0) AS matchcount,
(SELECT COUNT(*) FROM ci_nomatch n on n.reference = c.reference) AS othercount
FROM ci_address_book c
LEFT JOIN (
SELECT addressbook_id, COUNT(match_id) AS total
FROM ci_matched_sanctions
GROUP BY addressbook_id
) AS p
ON c.id=p.addressbook_id
ORDER BY matchcount DESC
LIMIT 0,15
@更新以供评论。包括一个额外的列matchcount-othercount作为扣除,最好通过子查询来完成
SELECT *, matchcount - othercount AS deducted
FROM
(
SELECT c.* , IFNULL( p.total, 0 ) AS matchcount, (
SELECT COUNT( * ) FROM ci_falsepositives n
WHERE n.addressbook_id = c.reference ) AS othercount
FROM ci_address_book c
LEFT JOIN (
SELECT addressbook_id, COUNT( match_id ) AS total
FROM ci_matched_sanctions GROUP BY addressbook_id ) AS p
ON c.id = p.addressbook_id ORDER BY matchcount DESC LIMIT 0 , 15
) S
显示第二个连接不起作用的代码,我们将尝试为您调试。[第三个表名为ci_nomatch,包含对ci_address_book.reference的引用]-ci_nomatch中的哪个字段连接到book.reference?我发现它起作用:选择c.*,如果p.total为null,0为matchcount,则从ci_误报n中选择COUNT*n其中n.addressbook_id=c。引用为其他计数从ci_address_book c左加入选择addressbook_id,按c.id=p.addressbook_id按matchcount DESC LIMIT 0,15从ci_matched_制裁组按addressbook_id作为p计算matched总数,是否有可能再产生一个结果,即:matchcount-othercount作为扣除的结果?顺便问一下。。。是的,我知道n.addressbook\u id会让人认为它想删除表addressbook的id字段,但实际上它是addressbook的引用字段,我认为注释被截断了?