- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:4つのテーブルを結合して集計したいです。)
【MySQL&PHP初心者向け】4つのテーブルを結合して集計する方法
このQ&Aのポイント
- MySQL&PHP初心者向けの集計方法をご紹介します。テーブル1はIDと会社名、テーブル2はIDと受注内容と受注金額、テーブル3はIDと経費、テーブル4はIDと仕入を持っています。これら4つのテーブルを結合し、必要なデータを取得する方法を解説します。
- 具体的には、ID・会社名・受注内容・経費・仕入を取得したいとします。しかし、結果が期待通りにならず、経費の部分が『400』となってしまう問題が発生しています。解決策をご紹介します。
- 解決策としては、JOIN文を使用して4つのテーブルを結合し、結果を集計する方法があります。また、CASE文を使用して条件に応じた集計結果を取得することも可能です。詳細なコード例も提供しますので、参考にしてみてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 #1提示のSQLは、group byは必要なかったですね。 <訂正版SQL例> select x.id, 会社名, 受注内容, (select sum(経費) from tbl3 where id=x.id) as 経費, (select sum(仕入) from tbl4 where id=x.id) as 仕入 from tbl1 as x,tbl2 where x.id=tbl2.id
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
回答No.1
各表の行数の比率を示してくれると、回答しやすいのですけどね。 テーブル4のID=35の行が2行あるので、単純にジョインするとテーブル3の経費=200の行が2個できてしまいます。 <SQL例> select x.id, 会社名, 受注内容, (select sum(経費) as 経費 from tbl3 where id=x.id group by id) as 経費, (select sum(仕入) as 仕入 from tbl4 where id=x.id group by id) as 仕入 from tbl1 as x,tbl2 where x.id=tbl2.id >MYSQL4.1でレンタルサーバーです。 >そしてCREATE TEMPORARY・CREATE VIEWは使用できないみたいです create viewは、MySQL 5.0で実装されたので、使えなくて当然でしょう。cerate temporary tableはMySQL 4.0以前の実装なので、create tableができるなら、使えると思いますが?
お礼
chukenkenkou様 ご丁寧にありがとう御座います。 レンタルサーバーでCREATE TEMPORARY TABLEは禁止されているみたいでした。 でもSELECTとFROMの間にSQLを書けるとは、考えもしなかったです。 本当に勉強になりました。 ありがとう御座いました。