通过多对多关联记录的计数对行进行排序
问题描述:
我知道还有很多其他的SO条目看起来像这样,但是我还没有找到能真正回答我的问题的人,所以希望你们其中一位能够要么回答它,要么指向另一个与之相关的SO问题。通过多对多关联记录的计数对行进行排序
基本上,我有以下查询返回Venue
s有任何CheckIn
s包含搜索Keyword
(本例中的“foobar”)。
SELECT DISTINCT v.*
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')
我想SELECT
和ORDER BY
匹配Keyword
对于每个给定Venue
的计数。例如。如果已经创建了5 CheckIn
s,并且与Keyword
相关联,那么应该有一个返回的列(称为类似keyword_count
),其值为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
哦男人,我是如此接近。我想昨晚我太累了。先生,你是英雄! – 2010-10-06 05:01:36