MySQL左连接,第二个表上有count

MySQL左连接,第二个表上有count,mysql,Mysql,我已经浏览了这个网站上的一些其他帖子,但没有看到我想要的东西,所以我就这样做了 假设我有两张桌子 juser ----------------------------- userID firstName lastName ----------------------------- 1 billy bob 2 jezze belle 3 bobbie sue 以及: 我想做的是得到一个结果集,显示jus

我已经浏览了这个网站上的一些其他帖子,但没有看到我想要的东西,所以我就这样做了

假设我有两张桌子

juser
-----------------------------
userID   firstName   lastName
-----------------------------
1         billy        bob
2         jezze       belle
3         bobbie       sue
以及:

我想做的是得到一个结果集,显示juser表中每个用户的信息,并向结果集添加一个名为connections的列,该列显示一个特定用户与另一个用户的“活动”连接数

根据上表,我预期的结果是

resultSet
-----------------------------------------------
userID    firstName    lastName    connections
-----------------------------------------------
  1         billy        bob           2
  2         jezze        belle         3
  3         bobbie       sue           1
我尝试的查询如下

select userID, firstName, lastName , coalesce(x.cnt,0) as connections 
from juser
left outer join (select count(*) cnt from juserrel where juserrel.userID =
userID or juserrel.relatedUserID = userID and juserrel.state = 'approved') 
x on userID = userID
我得到的结果集如下所示:

resultSet
-----------------------------------------------
userID    firstName    lastName    connections
-----------------------------------------------
  1         billy        bob           4
  2         jezze        belle         4
  3         bobbie       sue           4
请帮忙;)

试试看:

select u.userID, u.firstName, u.lastName,
    count(case when ur.state = 'approved' then 1 end)
from juser u
inner join juserrel ur on u.userID = ur.userID or u.userID = ur.relUserID
group by u.userID, u.firstName, u.lastName
试试:

select u.userID, u.firstName, u.lastName,
    count(case when ur.state = 'approved' then 1 end)
from juser u
inner join juserrel ur on u.userID = ur.userID or u.userID = ur.relUserID
group by u.userID, u.firstName, u.lastName

这将计算出用户2(Jezze Belle)有三个活动连接,但OP指定她只有两个(大概是因为其中两个关系都与用户1有关,每个方向一个)。我认为您需要在其中的某个地方使用
DISTINCT
UNION
。@ruakh我认为您是对的,这一点从问题上看不清楚。ohh我的错-是的,用户2应该有3个活动连接更新为SQL FIDLE示例。这将计算出用户2(Jezze Belle)有3个活动连接,但是OP指定她只有两个(大概是因为其中两个关系都是与用户#1的关系,每个方向一个)。我认为您需要在其中的某个地方使用
DISTINCT
UNION
。@ruakh我认为您是对的,这一点从问题中不清楚。ohh我的错-是的,用户2应该有3个活动连接更新为SQL FIDLE示例。是的,我编辑了它。。抱歉弄糊涂了是的我编辑了。。很抱歉给你带来了混乱