假设我有三个表:
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中将此效果作为存储过程执行,但是我无法获得我想要的结果。可以使用一些帮助。
答案 0 :(得分: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
答案 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