0

假设我有三个表:

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

如果我了解您的要求,这是一种方法,但如果您的 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 回答