SQL Server を初めて使用するので、SQL クエリの 1 つについて助けが必要です。
2 つのテーブル (Rating
とLikeDislike
) があります。
次のようなものを使用して、これらのテーブルの両方からデータを取得しようとしていますLEFT JOIN
:
SELECT
R.ID, R.Topic, R.CountLikes, R.CountDisLikes, R.Extra, LD.UserName, LD.Clikes
FROM
Rating As R
LEFT JOIN
LikeDislike AS LD ON LD.TopicID = R.ID
ORDER BY
R.ID DESC
上記のSELECT
ステートメントは結果を正常に表示しますが、重複も含まれています。データが表示されているときに重複を削除したいので、 and を使用してみDISTINCT
ましGROUP BY
たが、正しく使用していないためか、うまくいきませんでした。
更新:より明確で混乱を避けるために、各テーブルが正確に何をしているか、何を達成しようとしているのかを説明させてください。
Rating
表には次の列があります ( ) ID, Topic, CountLikes, CountDisLikes, Extra, CreatedByUser
。各トピックのトピック情報と好き嫌いの数、およびUserID
そのトピックを作成したユーザーを保存します。
LikeDisLike
表には次の列があります ( ) ID, TopicID, UserName, Clikes
。テーブル内の列TopicID
への FKです。ID
Rating
今私がやろうとしているのは、重複する行なしでこのテーブルの両方から情報を取得することです。Rating
テーブル +のすべての列とテーブルの列のデータを重複行なしで取得する必要がUserName
ありますClikes
LikeDislike
更新 2:
以下は、この SELECT ステートメントで重複した結果です。
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
結果の出力:
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