UNION ALLについて
lunch db
sales table/column2
s_id int(primary,A.I.)
f_id int
sales2/column2
s_id int(primary,A.I.)
f_id int
売れたものを記録したい
2つのよく似たテーブルにf_idに違う値を入れておく
支社ごとに違うテーブルで何が売れたかあがってくるとする
(支社1:sales / 支社2:sales2)
これをマージしたい
和演算をしたい
SELECT * FROM sales
UNION ALL
SELECT * FROM sales2
統合後の結果が出た
前提条件として、セレクトするカラム数とカラム名が一緒でないといけない
もし違ったらAS句で修正してやる
しかしこれでは「どの支社の売り上げか」わからない
3つめのカラムをでっちあげ、
店舗名のカラムを無理やり入れる
SELECT s_id, f_id,"支店A" FROM sales
UNION ALL
SELECT s_id, f_id ,"支店B" FROM sales2
でた
こういう風に存在しないカラムを出力することもできるらしい
SELECT s_id, f_id,"支店A" FROM sales
UNION ALL
SELECT s_id, f_id ,"支店B" FROM sales2
UNION ALL
SELECT s_id, f_id ,"支店B" FROM sales3
UNION ALL
SELECT s_id, f_id ,"支店B" FROM sales4
とかでいくつでもできるらしい
UNION ALLはこうやって全件出てくるが、
UNIONにしてしまうと、完全にかぶったデータは重複データとしてなくなってしまう
売上をみるにはALLがいる
しかもUNION ALLの方が時間が速い
これが集合演算の和演算
AにあってBにないという差演算もできるらしい
ただこっちはちょっとむつかしいらしい
サーバの種類によって方言があるらしい
なおMySQLより実際まりあDBで直書きしたほうがめっちゃ速いらしい
数時間かかるものが分単位で済むとか