2011-06-10 21 views
0

MySQLの結果セットにもう1列の出力を追加しようとしています。 2つの別々のクエリを実行することでこれらの結果を簡単に得ることができますが、それらを同じ結果セットに入れて一緒にエクスポートすることができます。異なる数の列を持つ2つの選択で結合する

select buildid, cast(status as char), eventtime from buildstatuses 
where statustype = 8) 
union all (select schedulerid, "", "" from builds 
where builds.buildid in (select buildid from buildstatuses where statustype = 8)); 

私は唯一の出力として、最初の選択に記載されている列を取得しています:

ビルド・ステータス・イベント時刻

私は得ることはありません。とにかく、ここで

は私がやっているものです私が望む他の列:schedulerid

アイデア?

おかげ

編集:私は今で午前場所です

select buildstatuses.buildid, cast(status as char), eventtime, "" as schedulerid 
from buildstatuses 
inner join builds 
on buildstatuses.buildid = builds.buildid 
where buildstatuses.statustype = 8; 

は、列IDがさえ別名

+0

まずは、テーブルの結合という概念について読んでください。 – Mulki

答えて

2
select buildid, cast(status as char), eventtime, schedulerid from buildstatuses 
inner join builds on buildstatuses.buildid = builds.buildid 
where statustype = 8 
で、まだ空白まで表示されて追加したいと更新

UNIONは、両方のテーブルで共通の列のみを選択します。

あなたが探しているものは、参加です。

編集:もともと質問を誤解し、unionへの変更を提案しました。私はあなたが探しているものを与えるべきjoinを使用するように答えを更新しました。

+0

これはちょうど私がスケジューラIDが –

+0

であることを望むブランクの列を出力します@Hunter - UNIONから何を期待していますか?それは行を追加します。 2つのテーブルの結果を同じ行に表示するには、JOIN instion of UNIONを使用する必要があります。アランの提案は、2つのテーブルの_independent_行を含む結果セットを作成するために行くための正しい方法である、と述べました。私はちょうど彼のアプローチでそれを追加したいと思います。もしそれがもっと理にかなっていれば、 'select ...、NULL AS schedulerid FROM ...'もできます。 –

+0

答えを更新しました。私はあなたが本当に組合ではなく、私があなたが望んだと思っていることをするために答えを更新したことを本当に探していると思います。 –

関連する問題