Sql 按多对多关联记录的计数对行进行排序
我知道还有很多其他的SO条目看起来像这个,但我还没有找到一个能够真正回答我的问题的条目,所以希望你们中的一位能够回答这个问题,或者给我指出另一个相关的SO问题 基本上,我有下面的查询返回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子句中没有任何查询的情况下完成,
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