Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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
Sql 按多对多关联记录的计数对行进行排序_Sql_Postgresql_Many To Many_Associations_Has Many Through - Fatal编程技术网

Sql 按多对多关联记录的计数对行进行排序

Sql 按多对多关联记录的计数对行进行排序,sql,postgresql,many-to-many,associations,has-many-through,Sql,Postgresql,Many To Many,Associations,Has Many Through,我知道还有很多其他的SO条目看起来像这个,但我还没有找到一个能够真正回答我的问题的条目,所以希望你们中的一位能够回答这个问题,或者给我指出另一个相关的SO问题 基本上,我有下面的查询返回ventions,其中有任何CheckIns包含搜索到的关键字(本例中为“foobar”) 我想选择和按排序每个给定的场馆匹配的关键字的计数。例如,如果已经创建了5个与该关键字相关联的签入,则应该有一个返回列(称为关键字计数),该列的值为排序后的5 理想情况下,这应该在SELECT子句中没有任何查询的情况下完成,

我知道还有很多其他的SO条目看起来像这个,但我还没有找到一个能够真正回答我的问题的条目,所以希望你们中的一位能够回答这个问题,或者给我指出另一个相关的SO问题

基本上,我有下面的查询返回
vention
s,其中有任何
CheckIn
s包含搜索到的
关键字(本例中为“foobar”)

我想
选择
排序每个给定的
场馆
匹配的
关键字
的计数。例如,如果已经创建了5个与该
关键字
相关联的
签入
,则应该有一个返回列(称为
关键字计数
),该列的值为排序后的
5

理想情况下,这应该在
SELECT
子句中没有任何查询的情况下完成,或者最好没有查询

我已经为此挣扎了一段时间,我的脑子里一片空白(也许这一天太长了),所以在此非常感谢您的帮助


提前谢谢

听起来你需要这样的东西:

SELECT v.x, v.y, count(*) AS keyword_count
FROM "venues" v
  INNER JOIN "check_ins"   c  ON c."venue_id"     = v."id"
  INNER JOIN "keywordings" ks ON ks."check_in_id" = c."id"
  INNER JOIN "keywords"    k  ON ks."keyword_id"  = k."id"
WHERE (k."name" = 'foobar')
GROUP BY v.x, v.y
ORDER BY 3

哦,老兄,我离得太近了。我想我昨晚太累了。先生,你是个英雄!
SELECT v.x, v.y, count(*) AS keyword_count
FROM "venues" v
  INNER JOIN "check_ins"   c  ON c."venue_id"     = v."id"
  INNER JOIN "keywordings" ks ON ks."check_in_id" = c."id"
  INNER JOIN "keywords"    k  ON ks."keyword_id"  = k."id"
WHERE (k."name" = 'foobar')
GROUP BY v.x, v.y
ORDER BY 3