获取 Table SQL 中相同字段的计数

Posted

技术标签:

【中文标题】获取 Table SQL 中相同字段的计数【英文标题】:Getting count of same fileds in Table SQL 【发布时间】:2016-06-18 09:43:26 【问题描述】:

我有 3 张桌子

1)question  
2)options
3)answers

表 1 包含多项选择题列表。表 2 包含该问题的多项选择。

举个例子,我有一个问题“你最喜欢哪个游戏?”

它存储在表 1 中,id 为 1。对于这个问题,表 2 中有 3 个选项;作为 ID 为 1,2 和 3 的“板球”、“足球”、“网球”。

当用户回答这个问题时,问题 id 和选项 id 被存储到第三个表中,就像他选择足球一样,表 3 中的条目是问题 id 和选项 id。

如果另一个用户选择相同的选项,则新条目存储在表 3 中。

我的需要是我想获得表 3 中每个选项的计数。

考虑 10 个用户选择板球,15 个用户选择足球,没有用户选择网球,所以我需要计数为 10,15,0 及其对应的选项 id

表格名称:问题

--------------------------------
| id |      question            |
--------------------------------
|  1 | which game u like most   |

表名:选项

------------------------------------------------
| id |  qid  |         option_name               |
------------------------------------------------
| 1  |   1   |          cricket                   |
------------------------------------------------
| 2  |   1   |          football                  |
------------------------------------------------
| 3  |   1   |          tennis                    |
------------------------------------------------

表名:答案

--------------------------------------------
| id | qid | optionId                       |
--------------------------------------------
| 1  | 1   | 3                              |
---------------------------------------------
| 2  | 1   | 3                               |
----------------------------------------------
| 3  | 1   | 2                               |
----------------------------------------------

上表表示,2人选择网球,1人选择足球,没有人选择板球。所以我需要结果表作为

------------------------------------------------------
| id | question                | option_name | count |
------------------------------------------------------
| 1  | which game u like most  | cricket     |   0   |
-------------------------------------------------------
| 2  | which game u like most  | football    |   1   |
-------------------------------------------------------
| 3  | which game u like most  | tennis      |   2    |
-------------------------------------------------------

但是当我尝试时,我没有得到板球的计数,因为没有人选择板球。我必须将板球计数为 0。有人可以帮我解决这个问题吗? 我的sql代码是

SELECT count(an.optionId) count , op.option_name, q.question from
questions q, options op, answers an where q.id=1
and  q.id=op.qid
and op.id=an.optionId
group by q.question, op.option_name

【问题讨论】:

认真的吗?您真的认为我们能够在这些小信息上为您提供帮助吗? 如果您愿意,请考虑遵循以下简单的两步操作:1.如果您还没有这样做,请提供正确的 CREATE 和 INSERT 语句(和/或 sqlfiddle),以便我们可以更轻松地复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。 @Akshay 如果您认为某个问题不清楚或不完整,请考虑相应地使用您的投票。 抱歉信息不完整。现在我已经添加了详细的需求。请帮助。在此先感谢 【参考方案1】:

好吧,我会试着假设你的情况;

3 个表:

    问题(question_id,问题,..) question_option(question_id,option_id,option,..) 注意:question_id 是 fk

    user_answer(question_id,option_id,..)

    select count(ua.option_id) count, qo.option,
    q.question_name 
    from question q, uestion_option qo, user_answer ua
    where q.question_id = ua.question_id
    and q.question_id = qo.question_id
    and qo.option_id = ua.option_id
    group by q.question_name, qo.option
    

【讨论】:

请不要在回答中提出更多问题。等到您的代表足够高才能发表评论。 抱歉,问更多问题是什么意思? 您编辑了您的答案。你在最后问了一个你不应该做的问题。另外,请不要“试图假设”用户的情况。再次,在评论中要求澄清。 埃里克这不是一个问题!我试图提供输出表的样本,但错过了格式化它!所以所有行都在一行中!例如:count question option 3 ok 可以吗? 好吧,伙计,这不是世界末日,我只是为您的帖子提供建议,以便更好地改进它们。

以上是关于获取 Table SQL 中相同字段的计数的主要内容,如果未能解决你的问题,请参考以下文章

合并列并获取计数 SQL Server 2008

联接表并获取特定记录的计数

SQL 获取具有相同 id 的所有行的计数

如何从 bigquery 中的另一个表中获取短语列表的表字段中的匹配计数?

joomla上标签计数的SQL查询

获取模式中所有表的计数