获取 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 中相同字段的计数的主要内容,如果未能解决你的问题,请参考以下文章