MySQLで普通のテーブルを結合して1つのテーブルにするような事は出来るのでしょうか?
表示イメージは画像添付の通りです。
互いのテーブルのフィールドを結合して1つの表にしたり、両方に一致するデータのみを結合したりというのはわかるのですが、表示イメージのように異なるテーブル同士を結合して出力する方法がわかりません。
もし、可能なら以下の点も併せて教えて下さい。
・表示イメージではフィールド数は同じだが、フィールド数が異なるテーブル同士を結合する事もできるのか
・order byやlimitも使えるのか
ズバリな回答をしていただいた方には100~200ポイントを進呈します。
UNION構文を使用することで実現できます。
MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.4.1.2 UNION 構
http://dev.mysql.com/doc/refman/4.1/ja/union.html
【例】
SELECT * FROM `search_engine` UNION ALL SELECT * FROM `es_site`
・表示イメージではフィールド数は同じだが……
SELECT文で列名を指定し、フィールド数を合わせれば可能です。
・order byやlimitも使えるのか
使用できます。
そういった用途の場合はUNIONが使えると思います。
サンプルを貼っておきます。
select * from ec_site union select * from search_engine order by name;
ごらんのようにorder句も使えます。
limitはどうやら無理そうです。
回答ありがとうございます。limitは他者の方が答えてくれていますが、実験したところ可能でした。
union allを使えば可能です。。
http://dev.mysql.com/doc/refman/4.1/ja/union.html
kt26さんのテーブル情報だと
select * from search_engin union all select * from ec_site
このSQLで結合できます。
また、oreder byもlimitも使えます。
select * from search_engin union all select * from ec_site order by date limit 2
日付順に2つのみ抽出です。
参考になればと思います。
日付の事例も出していただき、ありがとうございます。わかりやすかったです。
皆さん、回答の意見が一致していますので、それぞれの方の回答文を判断してポイントを付与させていただきます。
回答ありがとうございます。ローカル環境で試したところ、目的通りに動きました。
また、異なるフィールドであっても共通する部分が一致したら合わせる事も出来ました。order by やlimitに関しても問題ないです。
大変参考になりました。