Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 View. перестройка запроса или временная таблица  [new]
QuiGon
Member

Откуда:
Сообщений: 10
Скрипт создания представления для таблицы Вхождения
CREATE VIEW [dbo].[v_Vhogdenia]
AS
SELECT	ID_Docherngo, ID_Roditelia,
		Primenenie
FROM	dbo.Vhogdenia
WHERE	ID_Docherngo IN
		(SELECT ID_Izdelia
		 FROM dbo.v_Izdelia)
		OR ID_Roditelia IN
		(SELECT ID_Izdelia
		 FROM dbo.v_Izdelia)

v_Izdelia - вьюха с изделиями, доступными конкретному юзеру
В таблице вхождений в Ид_дочернего и ид_родителя содержатся ид'шники изделий. Комбинация этих полей есть primary key таблицы.
Нужно вытаскивать все строки, в которых есть упоминание об изделиях, доступных юзеру.
Т.е. не важно в каком столбце ид'шник изделия: в родительском или дочернем; не важно, если у юзера есть доступ к конкретному изделию, а доступа к его родительскому или дочернему нет.

Вопрос: как можно оптимизировать запрос, избежав двух одинаковых подзапросов
(SELECT ID_Izdelia
FROM dbo.v_Izdelia)

Можно ли как-то выкрутиться с помощью конструкций типа INTERSECT, EXIST, UNION и т.п.?
Или подзапрос засунуть во временную таблицу и в основном запросе к ней обращаться?
30 май 14, 15:15    [16098028]     Ответить | Цитировать Сообщить модератору
 Re: View. перестройка запроса или временная таблица  [new]
Glory
Member

Откуда:
Сообщений: 104760
EXISTS (SELECT *  FROM dbo.v_Izdelia WHERE ID_Docherngo = ID_Izdelia OR ID_Roditelia = ID_Izdelia)
30 май 14, 15:17    [16098048]     Ответить | Цитировать Сообщить модератору
 Re: View. перестройка запроса или временная таблица  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
SELECT	V.ID_Docherngo, V.ID_Roditelia, V.Primenenie
FROM	dbo.Vhogdenia V
WHERE	EXISTS(SELECT * FROM dbo.v_Izdelia I WHERE V.ID_Docherngo IN(I.ID_Izdelia,I.ID_Roditelia));
30 май 14, 15:23    [16098083]     Ответить | Цитировать Сообщить модератору
 Re: View. перестройка запроса или временная таблица  [new]
QuiGon
Member

Откуда:
Сообщений: 10
Glory,

Спасибо, теперь разобрался
30 май 14, 15:31    [16098128]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить