微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从多对多表中检索分组

如何解决从多对多表中检索分组

使用的“作弊”解决方GROUP_CONCAT()。这不会显示与任何主题均不相关的问题的数量

SELECT
      TopicIds
    , COUNT(*) AS QuestionCount
FROM
      ( SELECT
              QuestionId
            , GROUP_CONCAT(TopicId ORDER BY TopicId) AS Topics
        FROM 
              QuestionTopic
        GROUP BY 
              QuestionId
      ) AS grp
GROUP BY
      Topics

解决方法

这很难解释,但我会尽力而为。

我有2个具有多对多关系的桌子;有一个定义关系的链接表。这些表分别命名为Question,QuestionTopic和Topic。主题具有字段TopicID和TopicName.Question具有字段QuestionID和QuestionText。

我想检索主题列表以及属于该主题的问题数量。但是,可以将主题归为一组,并且应该知道该组合所独有的问题数。举个例子:

主题| 数数

主题1,主题2 | 10

主题1 | 3

主题2 | 2个

上面的内容暗示主题1和主题10有3个独特的问题,主题分别为主题1和主题2。剩下的2个问题都有topic2。我正在使用MySQL和PHP。谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。