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

Откуда:
Сообщений: 3
Помогите составить быстрый запрос SQL
Задание такое: по Id продукта находить самую высокую цену за которую его когда либо продавали. для этого надо обыскать таблицу ордер детайлов для всех ордеров где result code начинается с W.
Набросал SQL запрос,но он не работает и по ходу вообще не быстрый, очень давно не занимался этим (
SELECT    Manual_Unit_Price
FROM      Order_Detail  
               INNER JOIN
              Order_  ON Order_Detail.Order__Id = Order_.Order__Id 
               INNER JOIN
              JLA_Result_Code ON Order_.Result_code = JLA_Result_Code.JLA_Result_Code_Id               
WHERE (Order_Detail.Product_Id = '0x00000000000040E9') 
AND (JLA_Result_Code.Result_Code LIKE 'W%')
AND  Manual_Unit_Price = ANY ( SELECT TOP 1 MAX(Manual_Unit_Price) FROM Order_Detail GROUP BY Manual_Unit_Price )

Последнее условие не работает и как можно по-другому сделать , чтобы быстро работало ?Спасибо всем.
31 мар 15, 09:25    [17452842]     Ответить | Цитировать Сообщить модератору
 Re: Наиболее быстрое решение для поиска максимальной цены продукта  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 266
Может так?
SELECT    max(Manual_Unit_Price)
FROM      Order_Detail  
               INNER JOIN
              Order_  ON Order_Detail.Order__Id = Order_.Order__Id 
               INNER JOIN
              JLA_Result_Code ON Order_.Result_code = JLA_Result_Code.JLA_Result_Code_Id               
WHERE (Order_Detail.Product_Id = '0x00000000000040E9') 
AND (JLA_Result_Code.Result_Code LIKE 'W%')

group by Manual_Unit_Price
31 мар 15, 09:34    [17452877]     Ответить | Цитировать Сообщить модератору
 Re: Наиболее быстрое решение для поиска максимальной цены продукта  [new]
o-o
Guest
а вы чего все группируете по цене-то, когда надо макс. цену для каждого Id продукта?
или по id и группировать, или зачем вообще group by, если по id отфиильтровано?
31 мар 15, 10:14    [17453021]     Ответить | Цитировать Сообщить модератору
 Re: Наиболее быстрое решение для поиска максимальной цены продукта  [new]
Добрый Э - Эх
Guest
REALIST07,

да сколько же можно уже катать эту вату? может уже кто соберется и F.A.Q. по теме накатает?

а по теме - ссыль, на бородатый топик пятилетней давности...
31 мар 15, 10:26    [17453073]     Ответить | Цитировать Сообщить модератору
 Re: Наиболее быстрое решение для поиска максимальной цены продукта  [new]
o-o
Guest
Добрый Э - Эх,

FAQ здесь не работает (в смысле его пополнения), поэтому запасайтесь терпением и продолжайте ссылаться.
или: можно весь тот пост скопипастить и дать теме название с префиксом FAQ для удобства поиска.
---
но вообще-то что за огород для того, чтобы найти max(price) where id = ?
31 мар 15, 10:38    [17453146]     Ответить | Цитировать Сообщить модератору
 Re: Наиболее быстрое решение для поиска максимальной цены продукта  [new]
Добрый Э - Эх
Guest
o-o,

по авторской постановке вопроса непонятно, что именно он хочет. возможно, автор "не договорил" и ему нужно не только макс цена на каждый товар (кстати, даже не понятно - а на каждый ли товар нужна цена), но и дата, когда она была достигнута, а также список лохов, купивших товар по такой заоблочной стоимости... :)
31 мар 15, 10:49    [17453218]     Ответить | Цитировать Сообщить модератору
 Re: Наиболее быстрое решение для поиска максимальной цены продукта  [new]
o-o
Guest
Добрый Э - Эх
o-o,
по авторской постановке вопроса непонятно, что именно он хочет

да он запрос привел, где только ценой и интересуется.
но т.к. он еще по ней и ГРУППИРУЕТ, ему неизбежно выпадает КУЧА цен,
отсюда и пляски с TOP 1 MAX(Manual_Unit_Price) -- чтобы ОДНУ оставить
(IMHO)
31 мар 15, 10:54    [17453238]     Ответить | Цитировать Сообщить модератору
 Re: Наиболее быстрое решение для поиска максимальной цены продукта  [new]
REALIST07
Member

Откуда:
Сообщений: 3
Ребят спасибо всем за помощь, тот код, что я привел неправильный, мне нужно чтобы соответствовало заданию, то есть по Id продукта найти самую высокую цену за которую он продавался
31 мар 15, 10:55    [17453248]     Ответить | Цитировать Сообщить модератору
 Re: Наиболее быстрое решение для поиска максимальной цены продукта  [new]
REALIST07
Member

Откуда:
Сообщений: 3
Тема актуальна, так и не смог написать ничего путного (
31 мар 15, 14:33    [17454571]     Ответить | Цитировать Сообщить модератору
 Re: Наиболее быстрое решение для поиска максимальной цены продукта  [new]
o-o
Guest
REALIST07,
select MAX(d.Manual_Unit_Price)
FROM   Order_Detail d
	   INNER JOIN
		   Order_ o ON d.Order__Id = o.Order__Id 
	   INNER JOIN
		   JLA_Result_Code j ON o.Result_code = j.JLA_Result_Code_Id               
WHERE d.Product_Id = '0x00000000000040E9' AND j.Result_Code LIKE 'W%'

???
31 мар 15, 15:08    [17454826]     Ответить | Цитировать Сообщить модератору
 Re: Наиболее быстрое решение для поиска максимальной цены продукта  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
o-o,

+

кажись, можно выпилить

	   INNER JOIN
		   JLA_Result_Code j ON o.Result_code = j.JLA_Result_Code_Id   
31 мар 15, 15:14    [17454869]     Ответить | Цитировать Сообщить модератору
 Re: Наиболее быстрое решение для поиска максимальной цены продукта  [new]
o-o
Guest
churupaha,
не, вроде нельзя, у него же фильтр по JLA_Result_Code.Result_Code, а соединение по JLA_Result_Code.JLA_Result_Code_Id
31 мар 15, 15:26    [17454958]     Ответить | Цитировать Сообщить модератору
 Re: Наиболее быстрое решение для поиска максимальной цены продукта  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
o-o,

точно
31 мар 15, 15:30    [17454982]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить