2

2つのデータベースのテーブルのデータを結合したいと思います。1つは事前定義された値(itemId、itemName)でファイルされ、もう1つはユーザー(itemId、itemName、userId)によって入力されます。属性itemIdとitemNameは同じです。最初のテーブルからすべてのデータを選択し、2番目のテーブルからuserIdでデータを選択し、これら2つの結果を組み合わせます。

IDは自動インクリメントであり、同じ(2倍)になる可能性があるため、結合されたデータは区別する必要があります。ドロップダウンリストにこのデータを入力します。たとえば、データソースとディクショナリ(intはitemId、stringはitemName)をドロップダウンリストに含めることができるのはvalueFiledとvalueTextだけですが、これら2つのテーブルのIDは同じである可能性があります。テーブルからIDで選択されたアイテムであることがわかります。

これを結合するためのエレガントな方法はありますか?おそらく、ユーザーがログインしているときに常に一時テーブルなどでこれら2つのテーブルを結合する一時テーブルを使用します...

ご回答ありがとうございます

4

1 に答える 1

1

あなたは組合を探していると思います。ソースを識別するためにリテラル値を使用します。

select 'predefined' as source, itemid, itemname
  from predefined_values_table
union all
select 'user', itemid, itemname
  from user_supplied_values_table
  where userid = ?;

2列しか収容できない場合は、代わりにこのようなものを使用できる可能性があります。ただし、ID番号を取得するには、文字列の連結を元に戻す必要があります。

select 'p:' || itemid, itemname
  from predefined_values_table
union all
select 'u:' || itemid, itemname
  from user_supplied_values_table
  where userid = ?;
于 2012-05-24T12:46:52.877 に答える