• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:関連テーブルの検索方法)

関連テーブルの検索方法

このQ&Aのポイント
  • 1本のSQLでrecipe_idだけの一覧を取得する方法とクエリーの呼び方について教えてください。
  • ロジックは「ズッキーニ、トマト」で検索すると「ズッキーニとオリーブのトマトパスタ」と「ズッキーニとオリーブのトマトのマリネ」が取得できます。
  • 名前でのLike検索はせず、より効率的な方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

recipe_ingredients表のmaster_id列と、vegetables表のvegetable_id列が対応しているのですね? recipe表の野菜の名前はカタカナですが、vegetables表のname列はひらがななのですか? などなど、いろいろと引っ掛かる点があるのですけどね。 SQL例を示しますから、実行結果が期待通りか確認すると共に、どういうことをやっているか調べてみてください。 select tR.* from tR inner join (select R_id from tRI inner join tV on M_id=V_id where name in('ズッキーニ','トマト') group by R_id having count(*)=2) as x on tR.R_id=x.R_id order by tR.R_id

superplastic
質問者

お礼

ありがとうございます! having って一度も使ったことありませんでした…。 group by した結果に対して、条件で絞り込むことができるんですね! 二つのVegetablesの名前で検索したら、 2行のrecipe_ingredientsが引っかかったものが全てに 合致したもので、あるから、recipe_id を Group by でカウントを取った 結果に対して、絞り込むと言うことですよね? ご指摘いただいたとおり、 [recipe_ingredients.master_id と vegetables.vegetable_id が対応]で正しいです。 すみませんサンプル作るときにカラム名を間違えてしまったようです。 vegetablesについても、 ずっきーに、おりーぶ、とまと はカタカナのつもりになっていました。 ご指摘の通りです。すみません。 情けない不備がたくさんあったのに、 回答いただいてありがとうございました! 助かりました。