web-dev-qa-db-ja.com

MySQLデータベースからレポートするために、複数のSELECTサブクエリからデータを取得します

私が達成しようとしているのは、いくつかのサブクエリで構成される1つの複雑なクエリを作成することです。アイデアは、レポートデータをプルするために週に1回実行するようにビジネスパーソンに与えることです。

結果は、以下のクエリに似ています。このクエリでは、多くのテーブルのすべてのデータが1つの結果に表示されます。

select * from table1, table2, table3

だから私は何かが必要ですが、それはうまくいきません。

select 
    (select * from   table1 where ...... ) as table1,
    (select * from   table2 where....... ) as table2

手動で、サブクエリを個別に実行し、結果を1つの大きなExcelシートに手動で追加できます。しかし、私はビジネスマンがこれを簡単に行えるようにして、エラーを最小限に抑えたいと思っています。

これはMySQLで可能ですか?

これは、レガシーのOracle PIVOT SQLステートメントをMySQLの同等のステートメントに変換しているためで、サブクエリはかなり複雑です。

必要に応じてOracle SQLを提供できます。

いつものようにとても感謝しています。

15
user1775967

少しいじった後:

select * from
    (select * from   table1 where survey_user_id=4 ) as T1
    ,
    (select * from   table2 where survey_field_type_id=100 ) as T2
    ,
    (select * from table3  )  as T3
24
user1775967

私があなたを正しく理解しているなら、あなたはただUNIONを必要とします:D

(SELECT column1 AS name1, column2 AS name2 FROM table1 WHERE ...... )
UNION
(SELECT column3 AS name1, column4 AS name2 FROM table2 WHERE ...... )
UNION
....

コメントで後述するように、列は同じ名前(エイリアスを使用できます)で同じ順序である必要があります。

11
tkeram
select main.*,
(select col from tbl1 where tbl1.id=main.id) as col1,
(select col from tbl2 where tbl2.id=main.id) as col2,
(select col from tbl3 where tbl3.id=main.id) as col3
from master as main
0
user3600754