PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: выбор при помощи min() и max()
Поиск в теме | Версия для печати
Saymor
Отправлено: 14 Мая, 2013 - 20:26:08
Новичок
Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2011
Помог: 0 раз(а)
Имеется 1 таблица назовем её "table_1".
в таблице имеется сетка многочисленная цен, она хранится в поле "price"
также есть и другие поля с дынными.
Суть задачи сделать выборку min(price) и max(price), на выходе мы получим минимальное и максимальное значение поля "price" - это у меня получается, но проблема в том, чтоб получить другие строки/значения от минимального "price" и максимального "price".
как усовершенствовать данный код исходя из моей задачи?
Saymor
Отправлено: 16 Мая, 2013 - 09:36:13
Новичок
Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2011
Помог: 0 раз(а)
LifePlay пишет: Структуру таблицы покажите. Что-то не понятно.
CODE (
htmlphp ):
скопировать код в буфер обмена
| id | idObj | summa |
-------------------------
| 1 | 11 | 100 |
| 2 | 11 | 200 |
| 3 | 11 | 300 |
| 4 | 11 | 450 |
| 5 | 11 | 500 |
| 6 | 11 | 590 |
| 7 | 12 | 100 |
| 8 | 12 | 250 |
| 9 | 12 | 300 |
так лучше?
imya
Отправлено: 16 Мая, 2013 - 09:43:54
Участник
Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012
Откуда: Запорожье, Украина
Помог: 19 раз(а)
А вы читали применимость HAVING?
Цитата: HAVING <условия> аналогичен WHERE <условия> за исключением того, что строки отбираются не по значениям столбцов, а строятся из значений столбцов указанных в GROUP BY и значений агрегатных функций, вычисленных для каждой группы, образованной GROUP BY.
Сгруппируйте по суммам, должно работать.
Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
imya
Отправлено: 16 Мая, 2013 - 12:44:28
Участник
Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012
Откуда: Запорожье, Украина
Помог: 19 раз(а)
CODE (
SQL ):
скопировать код в буфер обмена
SELECT id, ibojb, summ FROM your_table
GROUP BY id, Obj, summ
HAVING ( sum = MIN( sum) OR sum = MAX( sum) ) AND idObj = 11
(Отредактировано автором: 16 Мая, 2013 - 12:45:15)
Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
Saymor
Отправлено: 17 Мая, 2013 - 19:25:14
Новичок
Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2011
Помог: 0 раз(а)
imya пишет: Так мы и не узнаем, сработало или нет
прошу прощения за столь долгий ответ, работа..
спасибо вам за помощь, но ваш запрос высодит все поля по idObj =11, а надо выбрать только большее и меньшее значение:
CODE (
htmlphp ):
скопировать код в буфер обмена
(
[ 0 ] => stdClass Object
(
[ id] => 55
[ idObj] => 11
[ summa] => 1000000
)
[ 1 ] => stdClass Object
(
[ id] => 164
[ idObj] => 11
[ summa] => 900000
)
[ 2 ] => stdClass Object
(
[ id] => 171
[ idObj] => 11
[ summa] => 3000000
)
[ 3 ] => stdClass Object
(
[ id] => 961
[ idObj] => 11
[ summa] => 2000000
)
[ 4 ] => stdClass Object
(
[ id] => 965
[ idObj] => 11
[ summa] => 1000000
)
[ 5 ] => stdClass Object
(
[ id] => 1001
[ idObj] => 11
[ summa] => 5000000
)
[ 6 ] => stdClass Object
(
[ id] => 1002
[ idObj] => 11
[ summa] => 4000000
)
)
(Отредактировано автором: 18 Мая, 2013 - 12:09:39)
imya
Отправлено: 20 Мая, 2013 - 11:15:17
Участник
Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012
Откуда: Запорожье, Украина
Помог: 19 раз(а)
Не вижу проблемы)
CODE (
SQL ):
скопировать код в буфер обмена
SELECT id, ibojb, summ FROM your_table
GROUP BY id, Obj, summ
HAVING ( sum = MIN( sum) OR sum = MAX( sum) ) AND ( idObj < 11 OR idObj > 11 )
(Отредактировано автором: 20 Мая, 2013 - 11:15:57)
Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
Saymor
Отправлено: 20 Мая, 2013 - 15:26:46
Новичок
Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2011
Помог: 0 раз(а)
imya пишет: Не вижу проблемы)
CODE (
SQL ):
скопировать код в буфер обмена
SELECT id, ibojb, summ FROM your_table
GROUP BY id, Obj, summ
HAVING ( sum = MIN( sum) OR sum = MAX( sum) ) AND ( idObj < 11 OR idObj > 11 )
мне надо сделать выборку большего и меньшего значения в поле "sum" у "idObj".
в результате должно быть выведено 2 строки с данными по объекту "11"
LIME
Отправлено: 20 Мая, 2013 - 15:34:42
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
еще варианты есть?
HAVING работает только с агрегирующими ф-циями
(Добавление)
Saymor пишет: в результате должно быть выведено 2 строки
ты уверен что их будет 2 а не больше...не может быть ряда с такой же суммой?
Saymor
Отправлено: 20 Мая, 2013 - 19:09:06
Новичок
Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2011
Помог: 0 раз(а)
LIME пишет: еще варианты есть?
HAVING работает только с агрегирующими ф-циями
(Добавление)
Saymor пишет: в результате должно быть выведено 2 строки
ты уверен что их будет 2 а не больше...не может быть ряда с такой же суммой?
Ваш запрос вообще ничего не выводит, ошибок тоже не выдаёт
LIME пишет: ты уверен что их будет 2 а не больше...не может быть ряда с такой же суммой?
[/quote]
Да, возможно и будет выдача с одинаковыми суммами, но это не критично
Поиск в теме | Версия для печати
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB