UNIONで、特定カラムだけ結合前のカラム名を取得
以下のようなSQLがあるとき、「best」カラムだけ、後で利用する際、「セレクト1」「セレクト2」何れのカラムから(どちらのテーブルから)取得したか知りたいのですが、どうすれば良いでしょうか?
<SQL文例>
SELECT id, tom, best, center, dragon
FROM (
SELECT m.id, m.tom, m.best1, m.center, u.dragon FROM main m ←セレクト1
LEFT JOIN usa u ON m.usa_id = u.id
UNION ALL
SELECT s.red_id, s.red_title, s.best2, s.center, u.dragon FROM sub s ←セレクト2
LEFT JOIN usa u ON s.usa_id = u.id
) as PIYO
<希望>
「id, tom, best, center, dragon」ではなく、
「id, tom, best1, center, dragon」+「id, tom, best2, center, dragon」で取得したい
<質問>
・SQL生成の方法がおかしいのでしょうか?
・「セレクト1」「セレクト2」を2回実行して、どーにかして足せば良いのでしょうか?
・そもそもSQL側で足す、という考えが間違っているのでしょうか? この場合は2回実行して、スクリプト側で処理すべきなのでしょうか?
<最終的にやりたいこと>
・「main」「sub」テーブルよりLIKE検索を行い、それぞれでヒットした該当レコードを取得したい
※UNIONを利用し、検索結果を両テーブルより取得表示するとこまでは出来たのですが、「main」「sub」何れから取得したか判断出来ないため、そこからリンクが貼れず、再考しています
お礼
回答ありがとうございます。勉強になりました。 「*」はデバック目的だったのですね。以後気をつけます。 asで別名にするか、カラム命名時にテーブル名を付与する等して対応したいと思います