0

3つのテーブルがあるとします。

Table A:

Column A | Column B
   Z          Q
   Q          Z


Table Z:

Column A | Column B
   100        50


Table Q:

Column A | Column B
   200        75 

私が探しているのは、表Aを一種のガイドとして使用して、次のような結果を生成することです。

 DESIRED RESULT:

@Temp Table
  Column A | Column B
     100        75
     200        50 

SQLでストアドプロシージャとしてこの効果を実行できることを望んでいましたが、希望する結果を得るのに問題があります。いくつかの助けを使うことができます。

4

2 に答える 2

1

考案された例では、異なるテーブルで同じ列名を使用するのは少し混乱しますが、あなたが説明しようとしているのは、古典的な多対多の関係だと思います。

もしそうなら、あなたTable Aはあなたの相互参照テーブルになります。

残念ながら、これを機能させるには、提案した実際の値ではなく、相互参照テーブルに関連する外部キー値を保存する必要があります。

これはおそらくあなたが求めているものです:

Table A
QA |ZA
1  |2
3  |4


Table Q
QA |QB
1  |100
3  |200


Table Z
ZA |ZB
2  |300
4  |400


SELECT Q.QB, Z.ZB
FROM Q INNER JOIN A ON Q.QA = A.QA
  INNER JOIN Z ON Z.ZA = A.ZA

...結果:

QB |ZB
100|300
200|400
于 2013-02-23T23:28:36.833 に答える
1

要件を理解している場合は、これを行う1つの方法がありますが、結合するものがない限り、zテーブルとqテーブルに複数の値がある場合は機能しません。

select 
  case when a.cola = 'Z' then z.cola else q.cola end cola,
  case when a.colb = 'Z' then z.colb else q.colb end colb
from tablea a, tableq q, tablez z

サンプルフィドルデモ

于 2013-02-23T23:29:21.203 に答える