![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
3テーブルよりを以下の条件で1つのSELECT文で集計したいのですが可能でしょうか?
・A_TBLのA単位でB_TBLのNYUKAとC_TBLのSYUKAを集計
<<A_TBL>> <<B_TBL>> <<C_TBL>>
A STOCK B A NYUKA C A SYUKA
a01 100 b01 a02 10 c01 a03 10
a02 200 b02 a01 20 c02 a01 20
a03 300 b03 a01 10 c03 a05 10
a04 400 b04 a03 30 c04 a01 30
a05 500 b05 a05 30 c05 a03 20
b06 a02 20 c06 a01 10
b07 a01 10 c07 a03 50
外部結合
SELECT a.A,a.STOCK,SUM(b.NYUKA) AS SUM_NYUKA,SUM(c.SYUKA) AS SUM_SYUKA
FROM A_TBL AS a".
LEFT OUTER JOIN B_TBL AS b ON a.A=b.A
LEFT OUTER JOIN C_TBL AS c ON a.A=c.A".
GROUP BY a.A
でうまくいきません。3つ以上のテーブルの外部結合の記述が間違っているのはわかるのですが、
どのように記述すればよいか、ネットで検索してもわかりませんでした。
宜しくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
>3テーブルにすると、交差結合に近い結果になってしまいます。
当然ですが、aとbの結合結果に、cを外部結合するのだから、そうなりますよね。
aに対して、b,cが一対になるように事前集約して、外部結合すれば良いでしょう。
select a.A,a.STOK,x.SUM_NYUKA,y.SUM_SYUKA
from A_TBL as a
left join (select A,sum(NYUKA) as SUM_NYUKA from B_TBL group by A) as x on (a.A=x.A)
left join (select A,sum(SYUKA) as SUM_SYUKA from C_TBL group by A) as y on (a.A=y.A)
order by a.A
No.3
- 回答日時:
っていうか単純に集計してから合わせればよいでしょう。
CREATE TEMPORARY TABLE TEMP_B
SELECT A,SUM(NYUKA) AS SUM_NYUKA
FROM B_TBL
GROUP BY A;
CREATE TEMPORARY TABLE TEMP_C
SELECT A,SUM(SYUKA) AS SUM_SYUKA
FROM C_TBL
GROUP BY A;
SELECT a.A
,STOCK
,SUM_NYUKA
,SUM_SYUKA
FROM A_TBL AS a
LEFT JOIN TEMP_B on a.A=TEMP_B.A
LEFT JOIN TEMP_C on a.A=TEMP_C.A
No.2
- 回答日時:
SELECT
ab.A
,ab.STOCK
,ab.SUM_NYUKA
,ac.SUM_SYUKA
FROM
(
SELECT
a.A
,a.STOCK
,SUM(b.NYUKA) AS SUM_NYUKA
FROM
A_TBL AS a
LEFT OUTER JOIN B_TBL AS b
ON a.A=b.A
GROUPBY
a.A
,a.STOCK
)abINNERJOIN
(
SELECT
a.A
,a.STOCK
,SUM(c.SYUKA) AS SUM_SYUKA
FROM
A_TBL AS a
LEFT OUTER JOIN C_TBL AS c
ON a.A=c.A
GROUPBY
a.A
,a.STOCK
)ac
ONab.A=ac.A
ANDab.STOCK=ac.STOCK
GROUPBY
ab.A
,ab.STOCK
--------------------------
こんなのどうですかね?実行してないので、構文ミスがあるかもなので、ご了承ください。
No.1
- 回答日時:
ぱっとみ、
>GROUP BY a.A
に、「a.STOCK」を追加してやればいけそうな気がしますが。
この回答への補足
早速のご回答有難う御座います。
GROUP BY a.A,a.STOCKでは結果は同じでした。
ちなみに、
SELECT a.A,a.STOCK,SUM(b.NYUKA) AS SUM_NYUKA
FROM A_TBL AS a".
LEFT OUTER JOIN B_TBL AS b ON a.A=b.A
GROUP BY a.A
と2テーブルの外部結合だとうまくいきますが、
3テーブルにすると、交差結合に近い結果になってしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) このマクロの説明文を教えてほしいです。 1 2023/01/12 09:17
- Visual Basic(VBA) VBA チェックボックスの設定について 1 2022/10/24 10:27
- Visual Basic(VBA) VBAチェックボックスで有効無効切り替えできるように 5 2022/10/21 16:13
- Visual Basic(VBA) フォーム上のリストボックスに重複して表示しています 3 2022/10/19 11:55
- Visual Basic(VBA) VBAコードで質問があります 2 2022/10/20 15:27
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- PHP PHPSpreadsheetを使って関数を繰り返し埋め込みたい 1 2023/05/24 11:33
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 4 2023/05/26 10:43
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
select文の実行結果に空白行を...
-
SQLで連続したカラムが何個ある...
-
mysql5でGROUP BYごとにLIMIT??
-
割合(パーセント)を求めるには?
-
SQLだけでselect結果に定数を加...
-
空きのID番号を取得する方法
-
Select文1 マイナス Select文2
-
SQL文の入れ子について
-
任意の上位の集計を取得するには?
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
【PL/SQL】FROM区に変数を使う方法
-
単一グループのグループ関数で...
-
1の行を固定した上でVBAを用い...
-
データ
-
count関数の値をwhere句で使用...
-
SQL文 複数実行
-
AccessのSQL文で1件のみヒット...
-
並べ替えについて
-
枝番の最大値とその前のデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
select文の実行結果に空白行を...
-
割合(パーセント)を求めるには?
-
SQL文の入れ子について
-
24時間以内に更新されたデータ...
-
時間帯テーブルから直近空き時...
-
空きのID番号を取得する方法
-
LIMIT句で少なくとも1行は選択...
-
Mysqlで変数を使ったSELECT文の...
-
SQLにて順列の抽出
-
SQLだけでselect結果に定数を加...
-
任意の上位の集計を取得するには?
-
条件付けで集計したものをUNION...
-
mysql5でGROUP BYごとにLIMIT??
-
3テーブルの外部結合
-
MySQLのサブクエリ
-
時間帯テーブルから直近空き時...
-
SQLで連続したカラムが何個ある...
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
テーブルの最後(最新)のレコー...
おすすめ情報