2010-10-05 107 views
0

我知道還有很多其他的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') 

我想SELECTORDER BY匹配Keyword對於每個給定Venue的計數。例如。如果已經創建了5 CheckIn s,並且與Keyword相關聯,那麼應該有一個返回的列(稱爲類似keyword_count),其值爲5,該列被排序。

理想情況下,應該在SELECT條款中沒有任何疑問,或者根本沒有任何疑問。

我一直在爲此掙扎一段時間,我的想法只是空白(也許這是一天太長),所以一些幫助將在這裏非常感謝。

在此先感謝!

回答

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 
+0

哦男人,我是如此接近。我想昨晚我太累了。先生,你是英雄! – 2010-10-06 05:01:36

相關問題