Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запрос с функцией MIN()
 
 автор: hk416   (05.04.2013 в 11:34)   письмо автору
 
 

Добрый день уважаемые господа. В общем вопрос такой. У меня есть таблица с данными, но главное в ней есть список агрегатов, Операционных систем этих агрегатов, и уровень допуска к этим агрегатам, и цена этих агрегатов. В общем задача, вывести минимальный по цене агрегат, под подходящей ОС и уровень допуска.
Я думал что проще такого запроса нет ничего, но смешно сказать, цену и ОС он выводит нормальную, а все остальное от балды по моему.

Вот пример моего запроса, как вы понимаете здесь ОС=12 а уровень допуска меньше или равен 4. Цена агрегата PriceDown.

SELECT `OS` , `Name` , MIN( `PriceDown` )
FROM `szi_nsd`
WHERE `OS` =12
AND `ID_AS` <=4


Благодарю за внимание!

  Ответить  
 
 автор: Valick   (05.04.2013 в 11:40)   письмо автору
 
   для: hk416   (05.04.2013 в 11:34)
 

SELECT `OS` , `Name` , `PriceDown`
FROM `szi_nsd`
WHERE `OS` =12
AND `ID_AS` <=4
AND `PriceDown` = MIN( `PriceDown` )


SELECT `OS` , `Name` , `PriceDown`
FROM `szi_nsd`
WHERE `OS` =12
AND `ID_AS` <=4
ORDER BY `PriceDown` DESC
LIMIT 1

но последний запрос не учитывает несколько одинаковых минимальных цен

  Ответить  
 
 автор: Sfinks   (05.04.2013 в 12:20)   письмо автору
 
   для: Valick   (05.04.2013 в 11:40)
 

А первый выдает ошибку =)

  Ответить  
 
 автор: Valick   (05.04.2013 в 12:32)   письмо автору
 
   для: Sfinks   (05.04.2013 в 12:20)
 

все может быть, на ответ было 15 сек, можно having пробнуть

  Ответить  
 
 автор: Sfinks   (05.04.2013 в 12:38)   письмо автору
 
   для: Valick   (05.04.2013 в 12:32)
 

Почему 15 сек? У вас шахматные часы взведены? Уже флажок падает? =)

  Ответить  
 
 автор: Valick   (05.04.2013 в 12:44)   письмо автору
 
   для: Sfinks   (05.04.2013 в 12:38)
 

на обед убегал :)

  Ответить  
 
 автор: hk416   (05.04.2013 в 12:35)   письмо автору
 
   для: Valick   (05.04.2013 в 11:40)
 

Огромное спасибо, сделал, получилось. Только одно НО!!! 2-й код заработал и сделал то что нужно, но 1-й не заработал и работать не будет в принципе. Во первых сразу выдал ошибку "#1111 - Invalid use of group function" во вторых я так знал что и MIN и MAX запрещено применять в конструкции WHERE, вот он и выдал ошибку.
Но все равно спасибо за помощь, задание выполнил!!!

  Ответить  
 
 автор: Valick   (05.04.2013 в 12:46)   письмо автору
 
   для: hk416   (05.04.2013 в 12:35)
 

SELECT `OS` , `Name` , `PriceDown`
FROM `szi_nsd`
HAVING `OS` =12
AND `ID_AS` <=4
AND `PriceDown` = MIN( `PriceDown` )


а еще лучше как-то так
SELECT m.`OS` , m.`Name` , m.`PriceDown`
(SELECT `OS` , `Name` , `PriceDown`
FROM `szi_nsd`
WHERE `OS` =12
AND `ID_AS` <=4) m
HAVING m.`PriceDown` = MIN( m.`PriceDown` )

  Ответить  
 
 автор: Sfinks   (05.04.2013 в 12:35)   письмо автору
 
   для: hk416   (05.04.2013 в 11:34)
 

По идее должно бы было работать вот так:
SELECT `OS` , `Name` , `PriceDown` 
FROM `szi_nsd` 
WHERE `OS` =12 
  AND `ID_AS` <=4 
HAVING `PriceDown` = MIN( `PriceDown` )

Но почему-то выдает 0 строк результата=(
Может я переработал конечно.... Проверьте, вдруг заработает =)

Зато работает так:
SELECT `OS` , `Name` , `PriceDown` 
FROM `szi_nsd` 
WHERE `OS` =12 
AND `ID_AS` <=4 
AND `PriceDown` = ( SELECT min( `PriceDown` )
                    FROM `szi_nsd` 
                    WHERE `OS` =12 
                    AND `ID_AS` <=4 
                  )

  Ответить  
 
 автор: hk416   (05.04.2013 в 14:58)   письмо автору
 
   для: Sfinks   (05.04.2013 в 12:35)
 

Да ребята у меня уже все давно работает, чо вы паритесь, я же вон ранее написал, про Минимум я же сказал он в WHERE никогда работать не будет!!!!!

  Ответить  
 
 автор: Sfinks   (05.04.2013 в 18:08)   письмо автору
 
   для: hk416   (05.04.2013 в 14:58)
 

Дак вы на время посмотрите.... моего ответа и вашего.
Так что никто не парится =)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования