私はSQLServerを初めて使用し、SQLクエリの1つについてサポートが必要です。
2つのテーブル(Rating
とLikeDislike
)があります。
私は次のLEFT JOIN
ようなものを使用してこれらのテーブルの両方からデータを取得しようとしています:
SELECT distinct LD.TopicID, R.ID, R.Topic, R.CountLikes, R.CountDisLikes, LD.UserName, LD.Clikes
FROM Rating As R
LEFT JOIN LikeDislike AS LD on LD.TopicID = R.ID
上記のSELECT
ステートメントは結果を正常に表示しますが、重複も含まれます。データが表示されたときに重複を削除したいので、andを使用してみDISTINCT
ましGROUP BY
たが、正しく使用していないためか、うまくいきませんでした。
より明確で混乱を少なくするために、各テーブルが正確に何をするのか、そして私が何を達成しようとしているのかをお話ししましょう。
Rating
テーブルには次の列()がありID, Topic, CountLikes, CountDisLikes, Extra, CreatedByUser
ます。UserID
トピック情報と、各トピックおよびそのトピックを作成したユーザーの好き嫌いの数が格納されます。
サンプルデータを含む評価表
ID Topic CountLikes CountDisLikes Extra CreatedByUser
1 Do You Like This 211 58 YesId 2
2 Or This 17 25 This also 3
79 Testing at home 1 0 Testing at home 2
80 Testing at home again 1 0 Testing 2
82 testing dislikes 0 1 Testing 2
76 Testing part 3 7 5 Testing 3 4
77 Testing part 4 16 6 Testing 4 5
LikeDisLike
テーブルには次の列()がありID, TopicID, UserName, Clikes
ます。テーブルの列TopicID
へのFKです。ID
Rating
サンプルデータを含むLikeDislikeテーブル
ID TopicID UserName Clikes
213 77 2 TRUE
214 76 2 FALSE
215 77 5 TRUE
194 77 3 TRUE
195 76 3 FALSE
196 2 3 TRUE
197 1 3 FALSE
今私がやろうとしているのは、重複する行なしでこのテーブルの両方から情報を取得することです。Rating
テーブル+からすべての列UserName
と重複行のないテーブルClikes
から列のデータを取得する必要がありますLikeDislike
以下は重複した結果です
TopicID ID Topic CountLikes CountDislikes UserName Clikes
NULL 79 Testing at home 1 0 NULL NULL
NULL 80 Testing at home2 1 0 NULL NULL
NULL 82 testing dislikes 0 1 NULL NULL
1 1 Do You Like This 211 58 3 FALSE
2 2 Or This 17 25 3 TRUE
76 76 Testing part 3 7 5 2 FALSE
76 76 Testing part 3 7 5 3 FALSE
77 77 Testing part 4 16 6 2 TRUE
77 77 Testing part 4 16 6 3 TRUE
77 77 Testing part 4 16 6 5 TRUE