質問
GROUP_CONCAT(tags.name) AS q_tags としてSELECT句に記述したとき
WHERE句ではq_tagsが使えないのでしょうか?
前提・実現したいこと
tagsの中に検索タグが含まれているレコードを抽出する方法を探しています。
sql
1SELECT questions.id AS q_id, question, answer, GROUP_CONCAT(tags.name) AS q_tags 2 FROM questions 3 LEFT JOIN tag_relation ON questions.id = tag_relation.question_id 4 LEFT JOIN tags ON tag_relation.tag_id = tags.id 5 WHERE q_tags LIKE "%文字列%" 6 GROUP BY questions.id
こんな感じで抽出したいのですが、エラーが出てしまいます。
次のように、WHERE句がないと、問題なくSELECTできます。
sql
1SELECT questions.id AS q_id, question, answer, GROUP_CONCAT(tags.name) AS q_tags 2 FROM questions 3 LEFT JOIN tag_relation ON questions.id = tag_relation.question_id 4 LEFT JOIN tags ON tag_relation.tag_id = tags.id 5 GROUP BY questions.id
(例)
q_id | question | answer | q_tags |
---|---|---|---|
1 | 質問内容 | 答え | タグa,タグb |
2 | 質問内容 | 答え | タグa,タグb,タグc |
3 | 質問内容 | 答え | タグc,タグd |
questionsテーブルと、tagsテーブルを、中間テーブルtag_relationを使って「多対多」で結合しています。
発生している問題・エラーメッセージ
#1054 - 列 'q_tags' は 'where clause' にはありません。
補足情報(FW/ツールのバージョンなど)
MySQL
回答2件
あなたの回答
tips
プレビュー