m пишу хранимую процедуру, в которой у меня есть 4 запроса на выбор
я хочу, чтобы некоторые данные из первого запроса выбора использовались в предложении where остальных трех запросов.
SELECT TOP 100 * FROM dbo.[Order] WHERE (dbo.[Order].[CreatedOn]<(GetDate()-7)) AND ((@OrderId IS NULL)OR(dbo.[Order].[OrderId] BETWEEN (@OrderId) AND (@orderId+100))) ORDER BY dbo.[Order].[OrderId]
SELECT * FROM dbo.[OrderItem] WHERE dbo.[OrderItem].[OrderId] IN(SELECT TOP 100 dbo.[Order].[OrderId] FROM dbo.[Order] WHERE (dbo.[Order].[CreatedOn]<(GetDate()-7)) AND ((@OrderId IS NULL)OR(dbo.[Order].[OrderId] BETWEEN (@OrderId) AND (@orderId+100))))
SELECT dbo.OrderItemAddOn.* FROM dbo.OrderItemAddOn INNER JOIN dbo.MenuItemAddOn ON dbo.OrderItemAddOn.MenuItemAddOnId = dbo.MenuItemAddOn.MenuItemAddOnId
INNER JOIN dbo.MenuAddOn ON dbo.MenuItemAddOn.MenuAddOnId = dbo.MenuAddOn.MenuAddOnId
INNER JOIN dbo.OrderItem ON dbo.OrderItemAddOn.OrderItemId = dbo.OrderItem.OrderItemId
AND dbo.OrderItem.OrderId IN(SELECT TOP 100 dbo.[Order].[OrderId] FROM dbo.[Order] WHERE (dbo.[Order].[CreatedOn]<(GetDate()-7)) AND ((@OrderId IS NULL)OR(dbo.[Order].[OrderId] BETWEEN (@OrderId) AND (@orderId+100)))) ORDER BY dbo.OrderItemAddOn.OrderItemAddOnId, dbo.OrderItemAddOn.OrderItemId
SELECT DISTINCT * FROM dbo.OrderItemModifier INNER JOIN dbo.OrderItem ON dbo.OrderItemModifier.OrderItemId = dbo.OrderItem.OrderItemId
AND dbo.OrderItem.OrderId IN (SELECT TOP 100 dbo.[Order].[OrderId] FROM dbo.[Order] WHERE (dbo.[Order].[CreatedOn]<(GetDate()-7)) AND ((@OrderId IS NULL)OR(dbo.[Order].[OrderId] BETWEEN (@OrderId) AND (@orderId+100))))
LEFT OUTER JOIN dbo.MenuModifierGroup ON dbo.OrderItemModifier.MenuModifierGroupId = dbo.MenuModifierGroup.MenuModifierGroupId ORDER BY OrderItemModifier.OrderItemId
Если вы заметили этот запрос
SELECT OrderId FROM dbo.[Order] WHERE (dbo.[Order].[CreatedOn]<(GetDate()-7)) AND ((@OrderId IS NULL)OR(dbo.[Order].[OrderId] BETWEEN (@OrderId) AND (@orderId+100))) ORDER BY dbo.[Order].[OrderId]
повторяется, так как я хочу, чтобы OrderIds из этого запроса. приведенные выше запросы определенно являются неправильным подходом. Я хочу использовать псевдоним для этого запроса и хочу использовать один и тот же результат во всех своих запросах. Не могли бы вы, ребята, помочь.
то, что мы можем сделать, это псевдоним этого запроса и использование одного и того же результата во всех четырех запросах. Это тоже хорошее решение.. но как псевдонимировать запросы в SP..