各テーブルには次のようなデータが格納されています
※記事マスタ SELECT id, name, alive FROM articles ORDER BY id DESC LIMIT 1; +----+--------+-------+ | id | name | alive | +----+--------+-------+ | 12 | 記事名 | 1 | +----+--------+-------+ ※記事に紐づくカテゴリ(中間テーブル) SELECT * FROM articles_genres LIMIT 5; +------------+----------+ | article_id | genre_id | +------------+----------+ | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | 1 | | 12 | 1 | +------------+----------+ ※カテゴリマスタ SELECT id, name, code, alive FROM genres LIMIT 3; +----+----------+--------+-------+ | id | name | code | alive | +----+----------+--------+-------+ | 1 | イベント | events | 1 | | 2 | スポーツ | sports | 1 | | 3 | アニメ | anime | 1 | +----+----------+--------+-------+
この中から、ある複数のカテゴリに紐づく記事データと、
どのカテゴリにも紐づかない無所属の記事データを抽出しようと思っています。
あるカテゴリに紐づく記事は、次のようなSQL文で抽出できました
SELECT DISTINCT a.*, g.code AS genre_code, g.alive AS genre_alive FROM articles AS a LEFT JOIN articles_genres AS ag ON a.id = ag.article_id LEFT JOIN genres AS g ON ag.genre_id = g.id WHERE a.alive = 1 AND g.code IN ('events', 'sports') AND g.alive = 1 ORDER BY a.sort DESC ;
ですが、無所属の記事を抽出する方法が思いつきませんでした。
簡単に、それらのデータを抽出する方法はありますでしょうか?
あるいは、記事は最低1つ以上何らかのカテゴリに属するように縛るなどして
無所属というケースを発生しないようにしたほうがやりやすいでしょうか?
(または、「未分類」みたいなカテゴリを用意して、デフォルトはそれに紐づけるとか)
皆様のお知恵を貸してください。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/02 07:27