|
|
|
| Добрый день уважаемые господа. В общем вопрос такой. У меня есть таблица с данными, но главное в ней есть список агрегатов, Операционных систем этих агрегатов, и уровень допуска к этим агрегатам, и цена этих агрегатов. В общем задача, вывести минимальный по цене агрегат, под подходящей ОС и уровень допуска.
Я думал что проще такого запроса нет ничего, но смешно сказать, цену и ОС он выводит нормальную, а все остальное от балды по моему.
Вот пример моего запроса, как вы понимаете здесь ОС=12 а уровень допуска меньше или равен 4. Цена агрегата PriceDown.
SELECT `OS` , `Name` , MIN( `PriceDown` )
FROM `szi_nsd`
WHERE `OS` =12
AND `ID_AS` <=4
|
Благодарю за внимание! | |
|
|
|
|
|
|
|
для: 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
|
но последний запрос не учитывает несколько одинаковых минимальных цен | |
|
|
|
|
|
|
|
для: Valick
(05.04.2013 в 11:40)
| | А первый выдает ошибку =) | |
|
|
|
|
|
|
|
для: Sfinks
(05.04.2013 в 12:20)
| | все может быть, на ответ было 15 сек, можно having пробнуть | |
|
|
|
|
|
|
|
для: Valick
(05.04.2013 в 12:32)
| | Почему 15 сек? У вас шахматные часы взведены? Уже флажок падает? =) | |
|
|
|
|
|
|
|
для: Sfinks
(05.04.2013 в 12:38)
| | на обед убегал :) | |
|
|
|
|
|
|
|
для: Valick
(05.04.2013 в 11:40)
| | Огромное спасибо, сделал, получилось. Только одно НО!!! 2-й код заработал и сделал то что нужно, но 1-й не заработал и работать не будет в принципе. Во первых сразу выдал ошибку "#1111 - Invalid use of group function" во вторых я так знал что и MIN и MAX запрещено применять в конструкции WHERE, вот он и выдал ошибку.
Но все равно спасибо за помощь, задание выполнил!!! | |
|
|
|
|
|
|
|
для: 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` )
|
| |
|
|
|
|
|
|
|
для: 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
)
|
| |
|
|
|
|
|
|
|
для: Sfinks
(05.04.2013 в 12:35)
| | Да ребята у меня уже все давно работает, чо вы паритесь, я же вон ранее написал, про Минимум я же сказал он в WHERE никогда работать не будет!!!!! | |
|
|
|
|
|
|
|
для: hk416
(05.04.2013 в 14:58)
| | Дак вы на время посмотрите.... моего ответа и вашего.
Так что никто не парится =) | |
|
|
|