- ベストアンサー
二つのテーブルから呼び出すには?
いつもお世話になります。 現在MySQLのAというテーブルとBというテーブル2つのテーブルがあります。 AとBは共に中のフィード名・フィールド数は全く同じで違う別々のサイトを運営しているためテーブルを分けてありますが、実質同じサーバーの中にあり「同じ形のテーブルで名前が異なる2つのテーブル」という状況です。 これをSQLでそれぞれ呼び出し、管理画面で最終的にひとつに表示させたいのですが良い方法はありませんでしょうか? $SQL .= " FROM "; $SQL .= " Aテーブル AS a,Bテーブル AS b"; ・・・ という形で呼び出していこうと思ったのですが最終的にAB両方のデータを出力するところで手がなくなってしまいました・・・。 (例)A、Bにそれぞれ注文データが入っていて、それを最終的には1つのものとして表示させたいです。 なかなか文字だけでは伝わりにくくてすいません・・・。 補足要求などあれば難なくお申し付けください。 何卒よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
http://dev.mysql.com/doc/refman/4.1/ja/union.html MySQLのバージョンが分かりませんが、UNION使えば一発です (SELECT a,b,c,d FROM table_A WHERE a = 1 ORDER BY a ) UNION (SELECT a,b,c,d FROM table_B WHERE a = 1 ORDER BY a ) ORDER BY a;
その他の回答 (1)
- shimix
- ベストアンサー率54% (865/1590)
1回の処理(SQL文)で終わらせないといけない理由はなんでしょうか? 両方のテーブルを単独に2回処理する方が素直だと思います。もしorderの指定が必要であれば、いったん自前の配列に入れてから(配列を)sortするしかないと思います。
お礼
ご回答ありがとう御座いました。 SQLが長い作業で呼び出し回数が多いためなるべく軽く呼び出したいためSQL1つで読み出せたらと思っています。 万一2つのSQLに分けた際、二つの値(A・・・$a B・・・&b)を同じ表の中に表示させるにはどのようにするべきでしょうか?
お礼
ご回答ありがとう御座いました! 現在のソースでは、 //データ検索(Aのみ) $strSQL = "SELECT "; $strSQL .= " ucf.uid "; $strSQL .= " FROM "; $strSQL .= " 【テーブルA】 AS aaa"; $strSQL .= " "; $strSQL .= " WHERE "; ・・・。 という形で書いているのですが「AS aaa」とおいた部分が非常に多いため、できれば「【テーブルA】AND【テーブルB】 AS aaa」とテーブル二つをまとめて検索対象にすることはできないでしょうか? 後半に同様のソースを書いたらaaaの値が上書きされてしまうので、aaaではないもので置き換えて再度書くのが一番早いでしょうか?
補足
お礼に一点誤りがありましたので訂正致します。 【誤】$strSQL .= " ucf.uid "; 【正】$strSQL .= " aaa.uid ";