dポイントプレゼントキャンペーン実施中!

mysql&php初心者です。
考えて4日目になりますがどうしても出来ないので宜しくお願いします。

現在使っているのは
MYSQL4.1でレンタルサーバーです。
そしてCREATE TEMPORARY・CREATE VIEWは使用できないみたいです。

そしてやりたいことは4つのテーブルを結合して集計したいです。
具体的には
テーブル1
ID・会社名の順に
35・テスト会社

テーブル2
ID・受注内容・受注金額
35・テスト受注・100000

テーブル3
ID・経 費
35・200

テーブル4
ID・仕 入
35・200
35・500

の4つです。
で希望の結果は

ID・会社名・受注内容・経費・仕入
35・テスト会社・テスト受注・200・700

と出したいのですがどうしても経費の部分が『400』となってしまいます。

無理なことをしようとしているのかも知れませんが宜しくお願いします

A 回答 (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
    • good
    • 0
この回答へのお礼

chukenkenkou様

ご丁寧にありがとう御座います。
レンタルサーバーでCREATE TEMPORARY TABLEは禁止されているみたいでした。

でもSELECTとFROMの間にSQLを書けるとは、考えもしなかったです。
本当に勉強になりました。
ありがとう御座いました。

お礼日時:2007/09/13 11:33

各表の行数の比率を示してくれると、回答しやすいのですけどね。



テーブル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ができるなら、使えると思いますが?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!