質問: 表題の件のようなクエリを作成したいのですがわからないのでどなたかご教授願えますでしょうか。 よろしくお願いします。 下記のような表があります。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/4db708326e247807e13057cd9505e5d3.png) 見ていただくと『チョコバナナの製品』と『リンゴ飴』の製品があるのですが、それぞれの材料数が一致しているプロダクトのみ表示したいです。 チョコバナナの製品のチョコは『5+5=10』バナナは『8+2=10』なのでそれに該当する4行すべて表示したいです。 リンゴ飴の製品のリンゴは『10』飴は『4+4』なので材料がそろっていないと言う事で表示したくありません。 どなたかご回答よろしくお願いいたします。 下記作成したSQLになります、まだプロダクト事に指定して作成している段階で、 表示も4行ではなく1行しか出せていません。(合計数) select * チョコバナナ,材料1,材料2 from テーブル group by チョコバナナ having sum(材料1)=sum(材料2)
回答: 質問のタイトルで削除したい、本文では表示したい、ってなっているけどどちらが目的? 質問にテーブルの定義はCREATE TABLE で、テーブルに存在するデータはINSERTで載せた方が適切なコメントが付き易いです。 同じSQLでもデータベースによって方言が大きいですから、どのデータベースを使うのかを質問のタグで明示したり、バージョンも明記した方が適切なコメントが付き易いです。 SQLの観点から Oracle Database, PostgreSQL, MySQL の特徴を整理しよう! 表示する方はたぶん、こんな感じ。CREATE TABLEも提示していないから実行してないけど。 ``` SELECT PRODUCT -- プロダクト , ZAIRYO_SU1 -- 材料数1 , ZAIRYO_SU2 -- 材料数2 FROM TAB1 -- テーブル名 WHERE PRODUCT = ( SELECT PRODUCT FROM TAB1 HAVING SUM(ZAIRYO_SU1) = SUM(ZAIRYO_SU2) GROUP BY PRODUCT ) ; ```