人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQLのSQL文について質問です。

MySQLで普通のテーブルを結合して1つのテーブルにするような事は出来るのでしょうか?
表示イメージは画像添付の通りです。

互いのテーブルのフィールドを結合して1つの表にしたり、両方に一致するデータのみを結合したりというのはわかるのですが、表示イメージのように異なるテーブル同士を結合して出力する方法がわかりません。

もし、可能なら以下の点も併せて教えて下さい。

・表示イメージではフィールド数は同じだが、フィールド数が異なるテーブル同士を結合する事もできるのか
・order byやlimitも使えるのか


ズバリな回答をしていただいた方には100?200ポイントを進呈します。

1176184009
●拡大する

●質問者: kt26
●カテゴリ:ウェブ制作
✍キーワード:MySQL SQL イメージ ズバリ データ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● lains_you
●90ポイント

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も使えるのか

使用できます。

◎質問者からの返答

回答ありがとうございます。ローカル環境で試したところ、目的通りに動きました。

また、異なるフィールドであっても共通する部分が一致したら合わせる事も出来ました。order by やlimitに関しても問題ないです。

大変参考になりました。


2 ● OTTii
●50ポイント

そういった用途の場合はUNIONが使えると思います。

サンプルを貼っておきます。

select * from ec_site union select * from search_engine order by name;

ごらんのようにorder句も使えます。

limitはどうやら無理そうです。

http://www.atmarkit.co.jp/fnetwork/rensai/sql09/sql1.html

◎質問者からの返答

回答ありがとうございます。limitは他者の方が答えてくれていますが、実験したところ可能でした。


3 ● tokyosmash
●90ポイント

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つのみ抽出です。

参考になればと思います。

◎質問者からの返答

日付の事例も出していただき、ありがとうございます。わかりやすかったです。


皆さん、回答の意見が一致していますので、それぞれの方の回答文を判断してポイントを付与させていただきます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ