質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

Q&A

解決済

1回答

438閲覧

SQL 「マスタAの項目aが、マスタBの項目b1~b3の何れかと一致すれば~」というselectがしたい

yuyu__

総合スコア26

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

0グッド

0クリップ

投稿2020/07/10 18:22

前提・実現したいこと

例)
マスタAの項目aが、マスタBの項目b1と一致すればマスタBの項目b1に紐づくb'1を取ってくる
マスタAの項目aが、マスタBの項目b2と一致すればマスタBの項目b2に紐づくb'2を取ってくる
といった取得処理を、SQLだけで実施したいです
b1とb'1は、画面上でグリッドの一行分として紐づいています

試したこと

LeftJoinかな?と思い試しましたが、今回の例でいう項目aをb1~b3の中から探さないといけないため、わかりませんでした。。

補足情報(FW/ツールのバージョンなど)

RDBMS:DB2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

条件によって結合先を変更するという考え方ではなく、一先ず結合して取得した結果をselectでcaseなどの条件で編集します。
同じテーブルを結合する場合には、エイリアスによって別なテーブルのように結合します。

SQL

1select MA.*, MB1.*, MB2.* 2from マスタA as MA 3 left join マスタB as MB1 4 on MA.A=MB1.B1 5 left join マスタB as MB2 6 on MA.A=MB2.B2

投稿2020/07/10 18:31

編集2020/07/10 18:34
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuyu__

2020/07/11 06:11

ご回答いただいた方法でいけそうです ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問