union句をサブクエリに含むクエリはどんな場合に使われますか?また、union句が使えない場合とはどんなときですか。例などを交えて説明いただけると幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
私がよく使うのは以下のケースです
1.テストデータを作る場合
lang
1insert into tbl 2(col1, col2, col3) 3select * 4from( 5 select 'hoge1' col1, 'hoge2' col2, 'hoge3' col3 6 union all 7 select 'huga1' col1, 'huga2' col2, 'huga3' col3 8)
2.横のデータを縦に持ちたい場合(unpivot句の代わり)
lang
1select col1, col2, col 2from ( 3select col1, col2, col3 col from hoge 4union all 5select col1, col2, col4 col from hoge 6union all 7select col1, col2, col5 col from hoge 8)
投稿2015/06/01 09:23
総合スコア985
0
私はダミーを作るときによく使います。
CREATE VIEW dummy AS
SELECT 1 AS id, 'リンゴ' AS name
UNION ALL
SELECT 2 AS id, 'ミカン' AS name
UNION ALL
SELECT 3 AS id, 'イチゴ' AS name
UNION ALL
SELECT 4 AS id, 'レモン' AS name;
このダミービューを利用することで、UI側はテーブルなしにコーディングをすることが可能で、UIが完成してからテーブル設計をすることで、最終的な手戻りを最小限に抑えています。
また、MySQLでは FULL OUTER JOIN が使えません。
どうしても、FULL OUTER JOIN と同等のことをするには、UNIONを使って結合する必要があります。
使えない場合??
巨大になるとパフォーマンスやメモリの問題が起きることはあり得ます。
カラム数が違うときは、少ない方にリテラルを入れましょう。
追記
回答のビューを見てください。
テーブルは入ってませんね?
ビューはエクセル(ODBC、または、エクセルマクロからコマンドラインでSQLを実行)で再作成ができるようにし、ビューをラップするストアドプロシージャを作ります。
lang
1DROP PROCEDURE IF EXISTS pr_dummy; 2DELIMITER $$ 3CREATE PROCEDURE pr_dummy( 4 -- パラメータ 5) 6BEGIN 7 -- エクセルで作ったテーブルなしのダミービューを返す。 8 SELECT * FROM dummy; 9END; 10$$ 11DELIMITER ;
最近では、仕様書(詳細設計)は作らないことが多いのかもしれませんが、一般的にどのテーブルの何から取ってくる。ということを詳細設計に書きます。そのために、テーブル設計は詳細設計より前にできている必要がある。
これが、そもそものトラブルの元です。
テーブルと疎結合になっていて、テーブル設計を無視して(命名法は合わせる必要がありますが)UI側を完成する。完全にアジャイルで完璧なUIを仕上げることができるでしょう。
そのときに使うダミーのストアドプロシージャを作るエクセルは、DBとのインタフェース仕様書(これを作らないプロジェクトがほとんど)であり、SQL側への要求仕様書になります。
それをもとにテーブル設計を行えば、トータル的な手戻りは最小限になります。
うちで使っているダミーを作るエクセルは、Oracle版とSQL Server版はサンプルを置いています。
http://www.g1sys.co.jp/stub.html
投稿2015/06/01 09:00
編集2015/06/04 00:34総合スコア295
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/04 00:34
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。