[英]How do I count values from two different tables based off a id from another table in one query?
I'm looking to count the amount of users
and channel_memberships
that have a channel_partner_id
for each channel from the channel_partners
table.我希望从
channel_partners
表中计算每个频道都有channel_partner_id
的users
和channel_memberships
的数量。
I want to run these two queries in one query:我想在一个查询中运行这两个查询:
SELECT channel_partners.id,
channel_partners.name,
COUNT(channel_memberships.channel_partner_id) AS membership_count
FROM channel_partners
JOIN channel_memberships ON channel_partners.id = channel_memberships.channel_partner_id
GROUP BY channel_partners.id
and和
SELECT channel_partners.id,
channel_partners.name,
COUNT(users.channel_partner_id) AS user_count
FROM channel_partners
JOIN users ON channel_partners.id = users.channel_partner_id
GROUP BY channel_partners.id
I've tried to do this:我试过这样做:
SELECT channel_partners.id,
channel_partners.name,
COUNT(users.channel_partner_id) AS user_count,
COUNT(channel_memberships.channel_partner_id) AS membership_count
FROM channel_partners
JOIN users ON channel_partners.id = users.channel_partner_id
JOIN channel_memberships ON channel_partners.id = channel_memberships.channel_partner_id
GROUP BY channel_partners.id
When I run this both user_count
and membership_count
are equal and have values that are vastly different from when I run the two queries individually.当我运行这个时,
user_count
和membership_count
是相等的,并且具有与我单独运行这两个查询时大不相同的值。 For example when ran individually, for the channel_partner with id 20 I get 1178 user_count, 12588 membership_count, and when I run both together I get user_count and membership_count equaling 14828664 for the channel_partner with id 20.例如,当单独运行时,对于 id 为 20 的 channel_partner,我得到 1178 user_count,12588 members_count,当我一起运行时,对于 id 为 20 的 channel_partner,我得到 user_count 和 member_count 等于 14828664。
Thanks for Martin and Nick in the comments for helping me solve this.感谢 Martin 和 Nick 在评论中帮助我解决这个问题。 I can use subqueries instead of joins.
我可以使用子查询而不是连接。
This is the working query here:这是这里的工作查询:
SELECT channel_partners.id,
channel_partners.name,
(SELECT COUNT(users.channel_partner_id)
FROM users
WHERE users.channel_partner_id = channel_partners.id) AS user_count,
(SELECT COUNT(channel_memberships.channel_partner_id)
FROM channel_memberships
WHERE channel_memberships.channel_partner_id = channel_partners.id) AS membership_count
FROM channel_partners
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.