【问题标题】: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。

标签: mysql join count


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    相关资源
    最近更新 更多