1

これが以前に尋ねられた場合は事前に謝罪しますが、私の問題の一部は、質問の仕方がわからないことです;)。どうぞ!

初心者 SQL プログラマー (SQL サーバー 2008 R2)。rma_header基本的に、 、 の3 つのテーブルがrma_detailありcode_typeます。

RMA に関するすべてのデータを取得するために、rma_headerとテーブルの間で内部結合を行っています。rma_detailすべてが愛ですが、私の問題は、2 つのフィールド (reasonと) がテーブルfaultに格納されているコードであることです。code_typeしたがって、データが出てきます:

rma# | 理由 | 障害

1234 | 012 | M

code_type表には、説明付きのコードreasonとコードがありfaultます。たとえば、

コードタイプ | code_id | code_desc

X | 012 | 不良品

ふ | み | 販売

ここでは、X (理由による) と F (障害による) の複数のコード タイプと、アプリケーションが使用する他のコード タイプの束があります。

そのため、データを含むクエリを作成し、コード自体の代わりにコードの説明を入力したいと思います。

これを行う方法を学ぶことができるように、誰かがガイダンスやリンクを提供できますか? 前もって感謝します!

4

1 に答える 1

1

既存の理由と障害コードが常に存在すると仮定すると、次のようになります。

Select * From rma_header h
Inner join rma_detail d on d.HeaderID = h.ID
inner join code_type r On d.ReasonCode = r.CodeId and r.Code_type = 'X'
inner join code_type f On d.FaultCode = f.CodeId and f.Code_type = 'F'

秘訣は、code_type に 2 回参加する必要があることです。1 回は理由のため、もう 1 回は障害のためです。

rma_detail の理由コードと障害コードが null になる可能性がある場合は、左外部結合が必要です。

Select * From rma_header h
Inner join rma_detail d on d.HeaderID - h.ID
left join code_type r On d.ReasonCode = r.CodeId and r.Code_type = 'X'
left join code_type f On d.FaultCode = f.CodeId and f.Code_type = 'F'

reason_codes テーブルと fault_codes テーブルがあったとしても、それほど違いはありません。

于 2013-05-29T15:31:35.663 に答える