下記関係のデータがありますす
・「a 4」 … 「tag 東京」「tag 大阪」
・「a 5」 … 「tag 大阪」「tag 福岡」
3テーブル
・aテーブル … 1
・tagテーブル … 多
・a_tagテーブル … 中間
「a 4」 から、「a 4」「tag 東京」「tag 大阪」を取得する場合は、下記のようなSQLを実行しているのですが、
mysql
1SELECT 2 a.id 3 GROUP_CONCAT(DISTINCT t.tag_id), 4 GROUP_CONCAT(DISTINCT t.tag) 5FROM a 6LEFT JOIN a_tag at ON (a.id = at.a_id) 7LEFT JOIN tag t ON (t.tag_id = at.tag_id) 8WHERE a.id = 4 9GROUP BY a.id
「tag 大阪」から、「a4」「tag 東京」「tag 大阪」と、「a 5」「tag 大阪」「tag 福岡」を取得する場合は、どのようなSQLを書けば良いですか?
「1対多」で、「多」の一つを渡して「1対多の全てに該当するデータ」を「GROUP BY a.id」で取得する方法を知りたいです。
試してみたこと
WHERE at.tag_id = 大阪 を追加してみたのですが、タグが1つしか取得できませんでした。
※aのid に対してtag が複数存在する場合でも、「tag 大阪」しか取得されない
1対多の場合、WHERE条件はFROM句に対してしか使用不可ですか?
回答2件
あなたの回答
tips
プレビュー