访问跨表计数的SQL语法
我有一个可能是简单的SQL语法问题,但几周来我一直在琢磨这个问题,它太抽象了,以至于我在Google中查找正确的搜索时遇到了困难 假设我有三个表:用户和预订:访问跨表计数的SQL语法,sql,select,Sql,Select,我有一个可能是简单的SQL语法问题,但几周来我一直在琢磨这个问题,它太抽象了,以至于我在Google中查找正确的搜索时遇到了困难 假设我有三个表:用户和预订: Users: UserID Name 1 Adam 2 Bob 3 Charlie Bookings: BookingID UserID MeetingID 1 1 1 2 2 1 3
Users:
UserID Name
1 Adam
2 Bob
3 Charlie
Bookings:
BookingID UserID MeetingID
1 1 1
2 2 1
3 2 2
4 3 2
我希望创建的查询将告诉我每个用户与多少其他用户共享了一个会议ID。在我的例子中:
Output:
UserID Co-Meeters
1 1
2 2
3 1
与示例中一样,在本例中,用户1和3只有一个共同会议,而用户2有两个共同会议1和3
如果我的描述不太清楚,我很抱歉,但我正试图从其他相交的表和字段中去掉不必要的复杂性,这些表和字段不会真正影响我正在寻找的语法。我最初的想法是使用groupby,但由于我所关注的领域的预订是多对多的,所以我无法使逻辑工作
非常感谢您的任何帮助。我认为这应该可以做到:
select u.userid, iif(isnull(x.others), 0, x.others) as [Co-Meeters]
from users u
left join bookings b on u.userid = b.userid
left join (
select meetingid, count(*) as others from bookings where userid <> u.userid
) x on b.meetingid = x.meetingid
order by 1