Производный стол используется несколько раз - PullRequest
1 голос
/ 15 октября 2011

Мне нужно выполнить 3 последовательных запроса, используя одну и ту же производную таблицу ... Я использую MS SQL Server 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…) …

Есть ли способ выполнить 3 запроса sql одновременно вкаким образом производная таблица

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

выполняется только один раз?

Я использую .net, так что ... мне интересно, могу ли я вернуть 3 таблицы и загрузить набор данныхс 3 таблицами.

Спасибо

1 Ответ

2 голосов
/ 15 октября 2011

Вы можете использовать WITH:

Примечание: Как указано @Martin *, 1006 * оценивается несколько раз, поэтому правильным решением является временная таблица.

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
 ...
...