0

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

基本上,我有以下查询,它返回包含搜索的Venue任何s 的 s (本例中为“foobar”)。CheckInKeyword

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的匹配计数。例如,如果已经创建了 5 个 s,与 that 相关联,那么应该有一个返回的列(称为类似),其值是已排序的。KeywordVenueCheckInKeywordkeyword_count5

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

我已经为此苦苦挣扎了一段时间,而我的大脑一片空白(也许一天太长了),因此在这里将不胜感激。

提前致谢!

4

1 回答 1

1

听起来你需要类似的东西:

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-05T13:30:00.797 回答