2014-03-13 89 views
0

我正在從twitter槽下載Twitter API的一些數據並將其保存到我的postgresql數據庫中。SQL與多對多關係中的重複結果

我保存來自推文的各種信息,但現在我想知道在推文中一起使用的一些hashtags。

我有表格:hashtag,tweet_has_hashtagtweet。該tweet_has_hashtag對於許多一對多的關係,betweet的tweethashtag

在運行的SQL是:

select h1.txt, 
     h2.txt, 
     count(th1.tweet_id) 
    from hashtag h1, 
     tweet_has_hashtag th1, 
     tweet_has_hashtag th2, 
     hashtag h2 
    where th1.hashtag_id = h1.id and 
     th2.tweet_id = th1.tweet_id and 
     th2.hashtag_id = h2.id and 
     h2.id <> h1.id 
group by h1.id, 
     h2.id 
order by count(th1.tweet_id) desc 
    limit 1000 

結果是好的,但塔#標籤是在不同的行相同,但切換例如:

love | me  | 925 
me  | love | 925 
style | fashion | 654 
fashion | style | 654 

我怎樣才能得到沒有切換重複的結果?

回答

1

替代h2.id <> h1.idh2.id > h1.id在您的WHERE

SELECT h1.txt, 
     h2.txt, 
     COUNT(th1.tweet_id) 
    FROM hashtag h1, 
     tweet_has_hashtag th1, 
     tweet_has_hashtag th2, 
     hashtag h2 
    WHERE th1.hashtag_id=h1.id 
     AND th2.tweet_id=th1.tweet_id 
     AND th2.hashtag_id=h2.id 
     AND h2.id > h1.id 
GROUP BY h1.id, 
     h2.id 
ORDER BY COUNT(th1.tweet_id) DESC 
    LIMIT 1000; 
+0

就這麼簡單:)謝謝 – microo8