我有一個 SQL Server 資料庫,用于存盤推文及其關系。
我有以下表格:
- 推文(具有推文屬性,例如其 id)
- 用戶(具有用戶屬性,例如其 id)
- hashtags(存盤提到的hashtags。它有一個id 和hashtag 列,用于存盤hashtag 字串)
- 搜索(這存盤了我感興趣的搜索,例如,如果我想搜索談論“汽車”的推文,搜索表中有一行帶有 search_id 和 search_word,這將是“cars”)。
我使用兩個一對多關系表(search_tweets和hashtags_tweets)連接這些表,連接每個表的 ID。這些是它們之間的聯系:
- 搜索 - search_tweets - 推文(searches_tweets 有 2 列:search_id 和 tweet_id)
- hashtags - hashtags_tweets - 推文(hashtags_tweets 有 2 列:hashtag_id 和 tweet_id)
首先,我想做以下查詢:我想檢索某個搜索的推文中提到某個主題標簽的次數。我通過這樣做實作了這一點:
SELECT TOP(100) hashtags.id, hashtags.hashtag, count(tweets.id) AS total_count FROM hashtags
JOIN hashtags_tweets ON hashtags_tweets.hashtag_id = hashtags.id
JOIN tweets ON tweets.id = hashtags_tweets.tweet_id
JOIN searches_tweets ON searches_tweets.tweet_id = tweets.id
WHERE searches_tweets.search_id = 1234
GROUP BY hashtags.id, hashtags.hashtag
ORDER BY total_count DESC
現在,我想添加一列,顯示在他們的推文中(來自同一個 search_id)寫這個主題標簽的用戶數量。我找不到辦法做到這一點。我嘗試了以下查詢:
SELECT TOP(100) hashtags.id, hashtags.hashtag, count(tweets.id) AS total_count, count(users.id) AS users_count
FROM hashtags
JOIN hashtags_tweets ON hashtags_tweets.hashtag_id = hashtags.id
JOIN tweets ON tweets.id = hashtags_tweets.tweet_id
JOIN searches_tweets ON searches_tweets.tweet_id = tweets.id
JOIN users ON tweets.user_id = users.id
WHERE searches_tweets.search_id = 1234
GROUP BY hashtags.id, hashtags.hashtag, users.id
ORDER BY total_count DESC
此查詢無效,因為users_count與total_count. 您將如何實作這一預期結果?
uj5u.com熱心網友回復:
對于您應該使用的不同數量的用戶
SELECT TOP(100) hashtags.id, hashtags.hashtag, count(tweets.id) AS total_count,
count(distinct users.id) AS users_count
FROM hashtags
......
GROUP BY hashtags.id, hashtags.hashtag
很明顯..你必須從broup by子句中洗掉users.id..
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/361370.html
標籤:sql sql-server 数据库 推特 关系型数据库
下一篇:檢索用戶明智的累計達到記錄
