如何在以下条件下为4个表编写JOIN QUERY

Jui*_*ice 5 php mysql join count left-join

我有4个表ACCOUNTS_TABLE,LINKS_TABLE,GROUPS_TABLE,KEYS_TABLE 在此输入图像描述

在此输入图像描述

在此输入图像描述

在此输入图像描述

我需要得到all accounts details这acct_type的xx使用count of Links, groups& keywords.我试过这个查询,但它给了所有count as 0

SELECT 
    acc.acct_id, acc.acct_type, count(link.id) as link_count, link.account, 
    groups.camp_id, count(groups.id) as group_count, count(keyword.key_id) as key_count 

FROM ".ACCOUNTS_TABLE." as acc  
    LEFT JOIN ".LINKS_TABLE." as link ON link.account=acc.acct_id AND acct_type='xx' 
    LEFT JOIN  ".GROUPS_TABLE." as groups ON  groups.camp_id=link.id 
    LEFT JOIN ".KEYS_TABLE." as keyword ON keyword.camp_id=link.id 

GROUP BY acc.acct_id 
Run Code Online (Sandbox Code Playgroud)

我所需的输出应该是这样的 在此输入图像描述

请任何人帮我解决这个问题

Kic*_*art 1

您可能应该使用 COUNT(DISTINCT ....)。

SELECT acc.acct_id, COUNT(DISTINCT link.id), COUNT(DISTINCT groups.id), COUNT(DISTINCT keyword.key_id)
FROM ACCOUNTS_TABLE acc
LEFT OUTER JOIN LINKS_TABLE link ON link.account = acc.acct_id AND acct_type = 'advertiser'
LEFT OUTER JOIN GROUPS_TABLE groups ON  groups.camp_id = link.id 
LEFT JOIN KEYS_TABLE keyword ON keyword.id = link.id 
WHERE acc.acct_type = 'xx'
GROUP BY acc.acct_id
Run Code Online (Sandbox Code Playgroud)

编辑

修改为使用更新的加入条件等:-

SELECT acc.acct_id, acc.acct_type, COUNT( DISTINCT link.id ) , COUNT( DISTINCT groups.id ) , COUNT( DISTINCT keyword.key_id ) 
FROM ACCOUNTS_TABLE acc
LEFT OUTER JOIN LINKS_TABLE link ON link.account = acc.acct_id
LEFT OUTER JOIN GROUPS_TABLE groups ON groups.camp_id = link.id
LEFT JOIN KEYS_TABLE keyword ON keyword.camp_id=link.id 
WHERE acc.acct_type = 'xx'
GROUP BY acc.acct_id, acc.acct_type
Run Code Online (Sandbox Code Playgroud)