mariaDBで集計した結果をjoin?union?する方法がうまくいかず困っています。
テーブルは下記のようなイメージです。
Aテーブル Bテーブル Cテーブル +--+----+ +--+----+ +--+----+ |id|avol| |id|bvol| |id|name| +--+----+ +--+----+ +--+----+ | 1| 1| | 2| 1| | 1|aaaa| | 2| 1| | 2| 1| | 2|bbbb| | 2| 2| | 2| 1| | 3|cccc| | 3| 2| | 3| 1| | 4|dddd| | 3| 3| | 3| 2| +--+----+ | 3| 1| | 4| 1| +--+----+ +--+----+ ``` 結果のイメージとしては ```ここに言語を入力 +--+----+----+----+ |id|name|avol|bvol| +--+----+----+----+ | 1|aaaa| 1|null| | 2|bbbb| 3| 3| | 3|cccc| 6| 3| | 4|dddd|null| 1| +--+----+----+----+ ``` 上記の結果になるように初心者なりにWEBを見ながら試行錯誤し下記のようなsqlを考えてみたのですが、ほしい結果と違う結果しか出ず困っています。 ``` SELECT c.id, c.name, SUM(tmp.avol) as avol, SUM(tmp.bvol) AS bvol FROM ( SELECT a.id AS aid, b.id AS bid, a.avol AS avol, b.bvol AS bvol FROM a LEFT JOIN b ON a.id = b.id UNION SELECT a.id AS aid, b.id AS bid, a.avol AS avol, b.bvol AS bvol FROM a RIGHT JOIN b ON a.id= b.id ) AS tmp LEFT JOIN c ON c.id = tmp.aid OR c.id = tmp.bid GROUP BY id ORDER BY id ``` 上記のsqlを試すと ```ここに言語を入力 +--+----+----+----+ |id|name|avol|bvol| +--+----+----+----+ | 1|aaaa| 1|null| | 2|bbbb| 3| 2| | 3|cccc| 12| 9| | 4|dddd|null| 1| +--+----+----+----+ ``` どのようにしたら思った通りの結果が出ますでしょうか? もし、参考になるURL等ありましたら教えて頂けませんでしょうか? よろしくお願い致します。 ###補足情報(言語/FW/ツール等のバージョンなど) 10.1.10-MariaDB, php 5.6.9
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/27 04:11