だから、私は同じセレブとの関係にあった有名人をリストするSQLでクエリを書く必要があります。私は基本的にceleb1、celeb2、およびceleb3をリストアップしています。ここで、celeb3はceleb1とceleb2の両方との関係にあります。ここで私が使用しているクエリです:SQL結果に重複行がある場合
SELECT S1.Celeb1, S2.Celeb2, S3.name AS Celeb3
FROM Relationships S1, Relationships S2, Celebs S3
WHERE S3.name = S1.Celeb2
AND S3.name = S2.Celeb1
AND S1.Celeb1 <> S2.Celeb2;
それが結果に私に200行を与えますが、私は、行の数を見て以来、このクエリが正しいかどうかを知ることは困難だとそれは私与えているように見えますceleb3がceleb1と2との関係にあった正しい結果。問題は、結果に重複する行があることです。これは、リレーションシップテーブルでは、celeb1、celeb2の関係をリストしていますが、逆のceleb2、celeb1もリストしているためです。どうすれば結果が重複しているのを防ぐことができますか?
ここに私がこれを行うために使用している2つのテーブル(リレーションシップとセレブ)があります。
CREATE TABLE Celebs(
name VARCHAR(30)
);
CREATE TABLE Relationships (
Celeb1 VARCHAR(30),
Celeb2 VARCHAR(30)
);
今日のヒント:現代的で明示的な 'JOIN'構文に切り替えます。書き込みが簡単(エラーなし)、読みやすく保守が容易、必要に応じて外部結合に変換する方が簡単です。 – jarlh
これは私が持っている問題を解決するのに役立つでしょうか? –
いいえ、しかし、あなたのSQL知識を次のレベルに! – jarlh