如何计算联接表上的行数
Posted
技术标签:
【中文标题】如何计算联接表上的行数【英文标题】:How to count rows on joined table 【发布时间】:2013-01-30 20:12:51 【问题描述】:我有 2 个表 - 一个主(称为组)和详细信息(称为用户)
我想返回每个主行以供后续显示,但我只想计算有多少详细行与主行匹配
我的查询不能正常工作——它只返回主表中的第一行
$query_string = '
SELECT groups.userGroupID, userGroup,
count(users.userGroupID) AS howMany
FROM groups_table AS groups
JOIN users_table AS users ON users.userGroupID = groups.userGroupID
ORDER BY groups.userGroupID
';
感谢您的帮助。
【问题讨论】:
你需要一个group by groups.userGroupID
。
感谢@MarcB -- 只返回前 2 个主行
您也没有指定连接类型,因此默认情况下 mysql 进行内部连接,并仅显示在连接两侧都有记录的行。如果您想要所有组,即使他们没有用户,也可以使用 LEFT JOIN。
【参考方案1】:
忘记了你的群组:
SELECT groups.userGroupID, userGroup,
count(users.userGroupID) AS howMany
FROM groups_table AS groups
LEFT JOIN users_table AS users ON users.userGroupID = groups.userGroupID
GROUP BY groups.userGroupID
ORDER BY groups.userGroupID
【讨论】:
我需要左连接还是右连接,因为我只有 2 个主行 如果您想要群组,即使他们没有用户,也可以离开加入。 在 9 分钟内无法接受答案(这是我真正讨厌 SO 的一件事!)...继续前进 - 下次重新登录时我会接受【参考方案2】:这对我有用,希望它可以帮助其他寻找相同答案的人
SELECT COUNT(howMany) AS fo2
FROM(
SELECT groups.userGroupID, userGroup,
users.userGroupID AS howMany
FROM groups_table AS groups
JOIN users_table AS users ON users.userGroupID = groups.userGroupID
ORDER BY groups.userGroupID) AS myCount
【讨论】:
以上是关于如何计算联接表上的行数的主要内容,如果未能解决你的问题,请参考以下文章