私はこのテーブルを持っています:
SUBSCRIPTION
NAME SUBSCRIBER
これは基本的に、相互にサブスクライブしている人々のリストを含むテーブルです。タプルのリストを出力するクエリを作成して、セットBがAにサブスクライブしているすべての人を表す場合、BはAがサブスクライブしていない人も表すようにします。つまり、相互にサブスクライブしていない人のリストを見つけます。
これは私が書いたクエリです:
SELECT A.name, B.name
FROM subscription AS A, subscription AS B
WHERE A.subscriber=B.name AND A.name!=B.subscriber;
つまり、BがAにサブスクライブし、AがBにサブスクライブしない2つの列AとBを表示する必要があります。
私が得ているのは、多くの行が重複しているガベージだけです。私はこれで何が間違っているのですか?
さて、サンプルを述べているときに間違えました。サンプルは次のようになります。
メリッサ、ジョーンはジョンを購読します。チャールズ、ジョンはジョアンを購読します。チャールズはメリッサを購読しています。メリッサ、ジョーンはチャールズを購読します。
最初の部分はサブスクライバー列を参照し、2番目の部分は名前列を参照します。つまり、ジョンの名前とメリッサ、ジョーンはジョンを購読します。
したがって、johnはmelissaにサブスクライブしていないため、(melissa、john)を出力する必要があります。
これはクエリをどのように変更しますか?