[英]How to use my horizontal query result to another SQL query
I need to use my horizontal query result to another SQL query. 我需要将水平查询结果用于另一个SQL查询。 How to do it, Please help. 怎么做,请帮忙。 Suppose I have two Tables: 假设我有两个表:
Tab1:
________________________________________
|ID | ARID | SEQ1 | SEQ2 | SEQ3 | SEQ4 |
|___|______|______|______|______|______|
|a1 | ar01 | A | C | B | D |
|a2 | ar02 | C | D | A | B |
|___|______|______|______|______|______|
Tab2:
_____________________
|ARID | SEQN | CODE |
|_____|______|______|
|ar01 | A | 1 |
|ar01 | G | 4 |
|ar01 | B | 2 |
|ar01 | D | 3 |
|ar01 | C | 8 |
|ar01 | F | 6 |
|ar01 | E | 5 |
|ar01 | H | 7 |
|ar02 | A | 1 |
|ar02 | H | 8 |
|_____|______|______|
Well I need result something like this: 好吧,我需要这样的结果:
ResultTab:
_____________________
|ARID | SEQN | CODE |
|_____|______|______|
|ar01 | A | 1 |
|ar01 | C | 8 |
|ar01 | B | 2 |
|ar01 | D | 3 |
|_____|______|______|
It will fetch SEQ1
, SEQ2
, SEQ3
and SEQ4
for a certain ARID
from Tab1
and return the mapped values from Tab2
for that ARID
. 这将获取SEQ1
, SEQ2
, SEQ3
和SEQ4
一定ARID
从Tab1
和返回映射值Tab2
为ARID
。
Please help me. 请帮我。 Thank you... 谢谢...
try this for ARID='ar01'
试试这个为ARID='ar01'
SELECT A.* FROM Tab2 A, Tab1 B
WHERE A.ARID='ar01' AND A.ARID=B.ARID
AND (A.SEQN=B.SEQ1 OR A.SEQN=B.SEQ2 OR A.SEQN=B.SEQ3 OR A.SEQN=B.SEQ4)
One more solution :- 另一种解决方案:-
Select b.* from Table2 b
inner join
(Select [ARID],[Seq1],1 as Ordr from Table1
union all
Select [ARID],[Seq2],2 as Ordr from Table1
union all
Select [ARID],[Seq3],3 as Ordr from Table1
union all
Select [ARID],[Seq4],4 as Ordr from Table1
)a(ARID,Seq,Ordr)
on a.ARID = b.ARID
and a.ARID = 'ar01' and a.SEQ=b.SEQN
order by a.ordr
Please use UNION ALL
to get benefit of INDEX. 请使用UNION ALL
以获得INDEX的好处。
SELECT t1.ARID, t1.SEQ1 AS SEQN
FROM Tab1 t1 INNER JOIN Tab2 t2 ON t1.ARID = t2.ARID
WHERE t1.ARID = 'ar01'
AND t1.SEQN = t2.SEQ1
UNION ALL
SELECT t1.ARID, t1.SEQ2 AS SEQN
FROM Tab1 t1 INNER JOIN Tab2 t2 ON t1.ARID = t2.ARID
WHERE t1.ARID = 'ar01'
AND t1.SEQN = t2.SEQ2
UNION ALL
SELECT t1.ARID, t1.SEQ3 AS SEQN
FROM Tab1 t1 INNER JOIN Tab2 t2 ON t1.ARID = t2.ARID
WHERE t1.ARID='ar01'
AND t1.SEQN = t2.SEQ3
UNION ALL
SELECT t1.ARID, t1.SEQ4 AS SEQN
FROM Tab1 t1 INNER JOIN Tab2 t2 ON t1.ARID = t2.ARID
WHERE t1.ARID='ar01'
AND OR t1.SEQN = t2.SEQ4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.