ここStackoverflowの誰かの助けを借りて、クエリが完璧になるところまで来ました。私のニーズに合わせてクエリを調整するのに少し助けが必要です。誰かが私を助けてくれることを願っています。
これがケースです、私は次の2つのテーブルを持っています:
Tweet
と
Tweet_tags
すべてのツイートにはタグがあり、1 つのツイートに同じタグを複数含めることができます。ツイートが投稿されてから 1 週間以内に、同じタグが付けられたツイートの数をカウントしたいと考えています。
現在のクエリは次のとおりです。
SELECT t.id
, s.tag
, ( SELECT COUNT(1)
FROM twitter.tweet_tags r
JOIN twitter.tweet q
ON q.id = r.tweet_id
WHERE r.tag = s.tag
AND q.date >= t.date
AND q.date <= t.date + INTERVAL 7 DAY
) AS cnt
FROM twitter.tweet t
JOIN twitter.tweet_tags s
ON s.tweet_id = t.id
ORDER
BY cnt DESC
このクエリの結果は次のとおりです。
| ID | Tag | Cnt |
-------------------------------
| 1 | Testtag | 2 |
| 2 | Testtag | 1 |
| 3 | tweettag3 | 1 |
| 4 | tweettag2 | 1 |
私のデータベースには testtag が 2 回あるので、最初の結果は正しいです。tweettag3 と tweettag2 はデータベースに 1 回あるので、それも良いのですが、再度追加すると複数の結果が表示される可能性があります。重複した結果を取り除くためにDISTINCT
onを使用しようとしましたが、これにより構文エラーが発生します。s.tag
だから私はそれがどのようになりたいかです:
| ID | Tag | Cnt |
-------------------------------
| 1 | Testtag | 2 |
| 2 | tweettag3 | 1 |
| 3 | tweettag2 | 1 |
誰かがこれについて私を助けてもらえますか? さらに情報が必要な場合は、そう言ってください!
ありがとう !!
編集 :
テーブルは次のようになります。
Tweet
---------------
ID
Message
users_id
Date
Tweet_tags
---------------
id
tag
tweet_id