2011-10-15 6 views
1
나도 같은 파생 테이블을 사용하여 3 개 연속 쿼리를 실행해야

... 난에서 3 개 SQL 쿼리를 실행하는 방법이 있나요 MS SQL 서버 2008파생 테이블

Select a,b,c from categories inner join (select x,y,z from derivedTable where…) … 
Select a,b,c from users inner join (select x,y,z from derivedTable where…) … 
Select a,b,c from orders inner join (select x,y,z from derivedTable where…) … 

를 사용하고 여러 번 사용 파생 테이블에서 같은 시간에

(select x,y,z from derivedTable where ...) 

번만 실행됩니까?

저는 .net을 사용하고 있습니다 ... 3 개의 테이블을 반환하고 3 개의 테이블로 데이터 세트를로드 할 수 있는지 궁금합니다. 당신은 WITH을 사용할 수

감사

+0

를 사용하는 데이터베이스? – Bohemian

+0

죄송합니다. SQL 2008 사용 – user996760

답변

2

:

참고 : 올바른 솔루션은 임시 테이블 그래서 @Martin WITH에 의해 지적은 여러 번 평가된다.

WITH derivedTable (x,y,z) 
as 
(
    select x,y,z 
     from derivedTable 
     ... 
) 
SELECT a, b, c 
    FROM users 
    join derivedTable on ... 
WHERE ... 
union all 
SELECT a, b, c 
    FROM orders 
    join derivedtable on ... 
WHERE ... 
union all 
... 

또는 임시 테이블 : 당신이

select x,y,z 
    into #derivedTable 
    from derivedTable 
    ... 

SELECT a, b, c 
    FROM users 
    join #derivedTable on ... 
WHERE ... 
union all 
SELECT a, b, c 
    FROM orders 
    join #derivedtable on ... 
WHERE ... 
union all 
... 
+3

+1 일시적인 것이 아닙니다. 단지 CTE가 여러 번 평가 될 것이라는 점을 분명히하기 위해'# temp' 솔루션은 그렇지 않을 것입니다. –

+0

David와 Martin 감사합니다. 그래서 Martin은 "WITH derivedTable"을 사용하여 쿼리가 여러 번 실행된다는 것을 말하고 있습니까? – user996760

+0

@Martin에게 감사를 표합니다. 스페인어는 "시간적"입니다 :) @ user996760 예, '함께'여러 번 평가할 수 있습니다. – DavidEG