Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择两列的组合,并计算此组合的出现次数_Mysql_Sql_Django Views - Fatal编程技术网

Mysql 选择两列的组合,并计算此组合的出现次数

Mysql 选择两列的组合,并计算此组合的出现次数,mysql,sql,django-views,Mysql,Sql,Django Views,我有一张桌子,每一行都是一个问题,所有的问题都有一个由字段提问和回答的问题。我想选择“提问者”和“回答者”的所有独特组合,并计算这种提问/回答组合出现的次数 question_tbl: id | asked_by | answered_by | session --------+----------+-------------+--------- 1 | AA | JD | 2011-2012 2 | JD | AA

我有一张桌子,每一行都是一个问题,所有的问题都有一个由字段提问和回答的问题。我想选择“提问者”和“回答者”的所有独特组合,并计算这种提问/回答组合出现的次数

question_tbl:

id      | asked_by | answered_by | session
--------+----------+-------------+---------
1       | AA       | JD          | 2011-2012
2       | JD       | AA          | 2011-2012
9       | AA       | JD          | 2011-2012
12      | AA       | JD          | 2009-2010
我想返回会话中的唯一组合,以及此组合的计数

例如,2011-2012年:

AA, JD, 2
JD, AA, 1
PS:理想情况下,我会为django orm写这篇文章,但我甚至不知道如何在谷歌上合理地搜索这篇文章,所以我的目标是找到SQL方式

问题解决后注意: 这在SQL中非常容易,在Djangos ORM中也非常容易。我将把它留在这里,以便以后记录:

from django.db.models import Count
from myproject.models import Questions

Questions.objects.filter(sesjonid='2011-2012').values('sporsmal_til', 'sporsmal_fra').annotate(count=Count('besvart_av'))
通过测试它在SQL中的外观,我似乎可以纠正(在./manage.py shell中):


这将打印与波西米亚人完全相同的SQL。

一个简单的
计数(*)
分组依据将完成以下操作:

select asked_by, answered_by, count(*)
from question_tbl
where session = '2011-2012'
group by 1, 2;
如果希望查询返回所有会话的数据,请使用以下命令:

select session, asked_by, answered_by, count(*)
from question_tbl
group by 1, 2, 3;

谢谢!我几乎感到尴尬,这件事可以这么容易做到,但我非常感谢你的帮助——我被卡住了。接受了!(我在想如何将其翻译成django orm代码,我想如果我能理解并添加它,问题就完成了。)
select session, asked_by, answered_by, count(*)
from question_tbl
group by 1, 2, 3;