共通フィールドが存在せず、ID列に基づいてテーブルを結合する

マックス・ボワザード

この質問は言いにくいようですが、私の状況を説明した後は理解しやすいはずです。2つのテーブルがあります。1つはインストラクターデータを保持するINSTRUCTORSと呼ばれ、もう1つはINSTRUCTORSテーブルに格納されているさまざまなID列のID値を保持するLIST_OPTION_ITEMと呼ばれます。含めるべき3番目のおそらく重要なテーブルはLIST_OPTION_TYPEです。これには、INSTRUCTORSにあるID列のIDが含まれています。おそらく、サンプルデータと私の希望する出力を表示することで説明する方が簡単でしょう。

インストラクター

RANK_ID SPECIALTY_ID DUTY_TITLE_ID SERVICE_BRANCH_ID STATUS_ID UNIT_ID OFFICE_SYMBOL_ID
1354 319 931 2604 1378 1406 1429

LIST_OPTION_ITEM

OPTION_ITEM_ID OPTION_TYPE_ID ITEM_VALUE
1354 22 CAPT
319 20 CBRNトラウマナース
931 21 IDMT-戦隊医療要素
2604 128 46N看護師
1378 23 米国
1406 24 ガード
1429 126 CERFP

LIST_OPTION_TYPE

OPTION_TYPE_ID OPTION_TYPE
20 専門
21 Duty_Title
22 ランク
23 Service_Branch
24 状態
126 単位
128 Office_Symbol

共通の列がないため、INSTRUCTORSとLIST_OPTION_ITEMを結合できないことに注意してください。ただし、LIST_OPTION_ITEMとLIST_OPTION_TYPEはに参加できOPTION_TYPE_IDます。SELECTクエリからの希望する出力

ランク 専門 職務タイトル 軍種 状態 単位 オフィスシンボル
CAPT CBRNトラウマナース IDMT-戦隊医療要素 46N看護師 米国 ガード CERFP

私はいくつかの解決策を試しましたが、何も思いつきません。クロス結合などが必要ですか?助けていただければ幸いです。

パーディープギャグ

ピボット関数とピボット解除関数を試してみました

以下はサンプルSQLです:

with inst as (select inst_id, col, col_id 
from (select rownum as inst_id, a.* from instructor a)
unpivot
(col_id for col in (status_id as 'STATUS',rank_id as 'RANK',specialty_id as 'SPECIALTY',duty_title_id as 'DUTY_TITLE')
))
select * from 
(select inst_id,col,item_value from inst,
(select a.option_type,b.option_item_id,b.item_value from LIST_OPTION_TYPE a, list_option_id b
where a.option_type_id = b.option_type_id) opt
where inst.col = upper(option_type)
and option_item_id = col_id)
pivot
(max(item_value)
for col in ('STATUS','RANK','SPECIALTY','DUTY_TITLE')
) order by inst_id;

これにより、目的の出力が得られます

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

結合条件に基づいてデータをフィルタリングせずに2つのテーブルを結合する

分類Dev

MVCの共通フィールドに基づいて2つのモデルを結合する方法

分類Dev

結合されたテーブルフィールドに基づいてシーケンス結果を並べ替えることができません

分類Dev

行が繰り返される共通フィールドに基づいて2つのファイルをマージ/結合する方法

分類Dev

MYSQL:レコードが見つからない場合、デフォルト値でIDに基づいてテーブルを結合する方法

分類Dev

フィールドの部分文字列値に基づいて2つのテーブルを結合するにはどうすればよいですか?

分類Dev

2 つの共通列のみに基づいて 2 つのテーブル (3 つの共通列を持つ) を結合する

分類Dev

SQLServerで共通の列を使用せずにテーブルを結合する

分類Dev

別のテーブルフィールドに基づいてテーブル列を更新する

分類Dev

ユーザーIDに基づいてテーブルからMysql列フィールドを更新します

分類Dev

SQL 内部結合に基づいてテーブルに列を追加する

分類Dev

列の値に基づいて異なるテーブルを結合する

分類Dev

条件に基づいてMySQLテーブルを結合する

分類Dev

Oracleの列値に基づいてテーブルを結合する

分類Dev

結合されたテーブルのフィールドに基づいて MySQL Select をフィルタリングする

分類Dev

列のデータに基づいてテーブルの値を結合(加算)する必要がある

分類Dev

SQLVBA-計算の最小結果に基づいてテーブルのフィールドを更新する

分類Dev

フィールドを選択せずにデータに基づいて行が存在するかどうかを確認するためのクエリ

分類Dev

同じ識別子を持つ複数のテーブルを結合し、共有識別子に基づいてフィールドをプルする

分類Dev

共通のフィールドに基づいて2つのrddを結合するにはどうすればよいですか?

分類Dev

SQLクエリ:共通のフィールドで相互に結合して複数のテーブルからデータを取得しますが、どのテーブルにも確実にデータがあるという保証はありません。

分類Dev

IDに基づいてテーブルの値を合計し、重複する値を作成せずに別のテーブルに保存する方法

分類Dev

別のフィールドの合計に基づいてSQLiteブールフィールドを更新する

分類Dev

列の値に基づいて日付が異なる2つのテーブルを結合しますか?

分類Dev

一致しない日付フィールドに基づいて2つのテーブルを結合する

分類Dev

bashのフィールド値に基づいて列を統合する

分類Dev

結合から評価された条件に基づいてmysqlテーブルのフィールドをカウントする

分類Dev

3つのテーブルで結合し、それらのテーブルの内容に基づいてフィールドを取得します

分類Dev

TSQL:基準に基づいてテーブルを結合する

Related 関連記事

  1. 1

    結合条件に基づいてデータをフィルタリングせずに2つのテーブルを結合する

  2. 2

    MVCの共通フィールドに基づいて2つのモデルを結合する方法

  3. 3

    結合されたテーブルフィールドに基づいてシーケンス結果を並べ替えることができません

  4. 4

    行が繰り返される共通フィールドに基づいて2つのファイルをマージ/結合する方法

  5. 5

    MYSQL:レコードが見つからない場合、デフォルト値でIDに基づいてテーブルを結合する方法

  6. 6

    フィールドの部分文字列値に基づいて2つのテーブルを結合するにはどうすればよいですか?

  7. 7

    2 つの共通列のみに基づいて 2 つのテーブル (3 つの共通列を持つ) を結合する

  8. 8

    SQLServerで共通の列を使用せずにテーブルを結合する

  9. 9

    別のテーブルフィールドに基づいてテーブル列を更新する

  10. 10

    ユーザーIDに基づいてテーブルからMysql列フィールドを更新します

  11. 11

    SQL 内部結合に基づいてテーブルに列を追加する

  12. 12

    列の値に基づいて異なるテーブルを結合する

  13. 13

    条件に基づいてMySQLテーブルを結合する

  14. 14

    Oracleの列値に基づいてテーブルを結合する

  15. 15

    結合されたテーブルのフィールドに基づいて MySQL Select をフィルタリングする

  16. 16

    列のデータに基づいてテーブルの値を結合(加算)する必要がある

  17. 17

    SQLVBA-計算の最小結果に基づいてテーブルのフィールドを更新する

  18. 18

    フィールドを選択せずにデータに基づいて行が存在するかどうかを確認するためのクエリ

  19. 19

    同じ識別子を持つ複数のテーブルを結合し、共有識別子に基づいてフィールドをプルする

  20. 20

    共通のフィールドに基づいて2つのrddを結合するにはどうすればよいですか?

  21. 21

    SQLクエリ:共通のフィールドで相互に結合して複数のテーブルからデータを取得しますが、どのテーブルにも確実にデータがあるという保証はありません。

  22. 22

    IDに基づいてテーブルの値を合計し、重複する値を作成せずに別のテーブルに保存する方法

  23. 23

    別のフィールドの合計に基づいてSQLiteブールフィールドを更新する

  24. 24

    列の値に基づいて日付が異なる2つのテーブルを結合しますか?

  25. 25

    一致しない日付フィールドに基づいて2つのテーブルを結合する

  26. 26

    bashのフィールド値に基づいて列を統合する

  27. 27

    結合から評価された条件に基づいてmysqlテーブルのフィールドをカウントする

  28. 28

    3つのテーブルで結合し、それらのテーブルの内容に基づいてフィールドを取得します

  29. 29

    TSQL:基準に基づいてテーブルを結合する

ホットタグ

アーカイブ