投稿とそのカテゴリを表す 2 つのテーブルがあります。
簡略化されたテーブル スキーマを次に示します。
posts post_categories
----- ----------------
-id -post_id
-title -cat_id
-text
これで、カテゴリ「5」に属さないすべての投稿を取得する必要があります。
SELECT * FROM `posts` WHERE id NOT IN( SELECT id FROM `posts`,
`post_categories` AS cat WHERE cat.cat_id=5 AND posts.id=cat.post_id )
投稿はどのカテゴリにも属さないため、サブクエリを使用しています。
cat_id!=5 AND posts.id=post_id
カテゴリのない投稿は取得できません。
サブクエリを実行するよりも良い方法はありますか?