我有三个表,并尝试在三个表的同一查询中使用左联接和内联接。但它没有按照我想要的方式工作。 我有四个标签 A、B、C、D,而 agent_id=22 仅使用两个标签。 下面是我正在使用的查询
SELECT MDT.tags,COUNT(MDTM.tag_id) AS tagCount
FROM mp_desk_agent_added_customers MDAC
INNER JOIN mp_desk_tags_match MDTM
ON MDAC.u_cust_id=MDTM.u_cust_id
INNER JOIN mp_desk_tags MDT
ON MDTM.tag_id=MDT.tag_id
WHERE MDAC.agent_id=22
GROUP BY MDT.tag_id
我得到的结果只是两个标签名称及其计数,它们存在于 tag_match 表中。但我想要所有四个标签名称,并且对于 tag_match 表中不存在的标签计为 0。
表结构
mp_desk_tags
标签,tag_id
mp_desk_tags_match
tag_match_id、tag_id、u_cust_id
mp_desk_agent_added_customers
u_cust_id,agent_id
最佳答案
有四个标签,您需要四个结果记录,每个标签一个。因此从标签表中选择。您可以通过子选择来获取计数。
select
tag_id,
tag,
(
select count(*)
from mp_desk_tags_match dtm
where dtm.tag_id = dt.tag_id
and u_cust_id in
(
select u_cust_id
from mp_desk_agent_added_customers
where agent_id = 22
)
) as tag_count
from mp_desk_tags dt;
这里与连接相同:
select
dt.tag_id,
dt.tag,
count(*)
from mp_desk_tags dt
left join mp_desk_tags_match dtm on dtm.tag_id = dt.tag_id
left join mp_desk_agent_added_customers daac on daac.u_cust_id = dtm.u_cust_id
and daac.agent_id = 22
group by dt.tag_id;
关于mysql - 同一 mysql 查询中的左连接和内连接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23729813/