私は3つのテーブルを持っています
Articles Channels ArticlesChannels
pk id pk id pk articlePk channelPk
1 a1 1 c1 1 1 1
2 a2 2 c2 2 1 2
3 2 2
ここで、あるコレクションに含まれていて、別のコレクションから除外されているすべての記事を選択したいと考えています。
例:チャネル a1 を持ち、チャネル a2 を持たないすべての記事を選択します。
正しい結果:両方の記事がチャネル c2 にあるため、空です。
例:チャネル a1 を持つすべての記事を選択します。
正しい結果:チャンネル c1 に Article1 が 1 つだけあります。
私のSQLは次のようになります。
SELECT a.id
FROM articles a, channels c, articlechannels ac
WHERE a.pk=ac.articlePk
AND ac.channelPk = c.pk
AND c.id IN ('a1')
AND c.id NOT IN ('a2');
問題は、結果が c.id NOT IN ('a2') に存在する結果を除外しないことです。
何か案は?