这很难解释,但我会尽我所能。
我有两个具有多对多关系的表;有一个定义关系的链接表。这些表格被命名为问题、问题主题和主题。topic有topicid和topicname字段。question有questionid和questiontext字段。
我想检索一个主题列表和属于该主题的问题数。但是,可以将主题组合在一起,并且应该知道这种组合特有的问题的数量。例如:
主题计数
主题1,主题2 10
专题1 3
专题2 2
以上暗示了topic1和topic2有3个主题,分别是topic1和topic2。剩下的两个问题有主题2。
我正在使用mysql和php。谢谢。

最佳答案

“作弊”解决方案,使用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

10-08 15:23