PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): « 1 [2] 3 »   

> Описание: выбор при помощи min() и max()
Saymor
Отправлено: 21 Мая, 2013 - 11:53:12
Post Id



Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




LIME пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table` WHERE idObj=11
а это выдает?

Да, конечно! выдаёт все объекты с idObj =11
 
 Top
LIME
Отправлено: 21 Мая, 2013 - 12:08:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 10562
Дата рег-ции: Нояб. 2010  


Помог: 314 раз(а)




почему-то работает только
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table` HAVING price=MIN(price)
объясните мне почему не работает
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table` HAVING price=MAX(price)
а пока сам поищу
(Добавление)
возвращает 0 строк
(Добавление)
более того
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table` HAVING price<=MAX(price)
возвращает то же строку что и price=MIN(price)
она у меня единственная...перепутать нельзя...промежуточных значений 1500 примерно...а оно одну возвращает!!!
магия!!!
алерт!!!алерт!!!

(Отредактировано автором: 21 Мая, 2013 - 12:23:48)



-----
DDD
 
 Top
imya
Отправлено: 21 Мая, 2013 - 12:57:26
Post Id



Участник


Покинул форум
Сообщений всего: 1473
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




А группировать кто будет? С группировкой должно работать. HAVING ведь работает с группами.


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
LIME
Отправлено: 21 Мая, 2013 - 13:17:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 10562
Дата рег-ции: Нояб. 2010  


Помог: 314 раз(а)




imya пишет:
А группировать кто будет?
Пушкин !!! харош чушь нести...без групп агрегируются все ряды


-----
DDD
 
 Top
imya
Отправлено: 21 Мая, 2013 - 13:52:30
Post Id



Участник


Покинул форум
Сообщений всего: 1473
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




LIME пишет:
Пушкин !!! харош чушь нести...без групп агрегируются все ряды


Да, действительно , неправ, прошу прощения.


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
DeepVarvar Супермодератор
Отправлено: 21 Мая, 2013 - 13:56:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 10378
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM tbl ORDER BY price DESC
  2. UNION ALL
  3. SELECT * FROM tbl ORDER BY price ASC

Не?
 
 Top
LIME
Отправлено: 21 Мая, 2013 - 13:58:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 10562
Дата рег-ции: Нояб. 2010  


Помог: 314 раз(а)




DeepVarvar да пофиг!!!
почему MIN работает а MAX нет???!!!
(Добавление)
тем более в UNION сортировка идет только после всех выборок


-----
DDD
 
 Top
imya
Отправлено: 21 Мая, 2013 - 14:13:30
Post Id



Участник


Покинул форум
Сообщений всего: 1473
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT MAX(blocked) FROM VENDTABLE HAVING MAX(blocked) = 2


Такой запрос сработал

и такой тоже

CODE (SQL):
скопировать код в буфер обмена
  1.  SELECT MIN(blocked) FROM VENDTABLE HAVING MIN(blocked) = 0


значения в поле blocked 0,1,2.

Не знаю, как у вас, а у меня на выборку всех строк он ругается, потому что не знает по какому полю ему агрегировать.


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
LIME
Отправлено: 21 Мая, 2013 - 14:15:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 10562
Дата рег-ции: Нояб. 2010  


Помог: 314 раз(а)




а теперь убери having и удивись что вернулась 1 строка и там нечему агрегироваться после выборки
(Добавление)
и уж тем более нет blocked в результате


-----
DDD
 
 Top
imya
Отправлено: 21 Мая, 2013 - 14:17:44
Post Id



Участник


Покинул форум
Сообщений всего: 1473
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




LIME пишет:
а теперь убери having и удивись что вернулась 1 строка и там нечему агрегироваться после выборки
(Добавление)
и уж тем более нет blocked в результате


Да, и ?

Я к тому, если делать выборку всех полей - работать не будет.


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
LIME
Отправлено: 21 Мая, 2013 - 14:22:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 10562
Дата рег-ции: Нояб. 2010  


Помог: 314 раз(а)




imya перестань с умным видом нести ахинею
как происходит выборка(индексы опустим)
для каждого ряда вычисляется условие в WHERE и если верно то ряд попадает в результирующую таблицу
ессесно мы не можем в выражении использовать заранее неизвестные результаты агрегирующих ф-ций
для этого и придуман HAVING
чтоб еще раз по результату пробежаться
а у тебя поля blocked нет в результатах
осознай и то что MIN РАБОТАЕТ!!!! в моих примерах
внимательно перечитай описанные мной странности


-----
DDD
 
 Top
imya
Отправлено: 21 Мая, 2013 - 14:27:55
Post Id



Участник


Покинул форум
Сообщений всего: 1473
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




Мы друг друга неправильно поняли и незачем из-за этого оскорблять.
Подмигивание
Напомнило "Я тебе про Фому, а ты мне про Ерёму"


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
Saymor
Отправлено: 21 Мая, 2013 - 14:45:47
Post Id



Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




нет, ну а мне-то что делать господа?
 
 Top
LIME
Отправлено: 21 Мая, 2013 - 14:49:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 10562
Дата рег-ции: Нояб. 2010  


Помог: 314 раз(а)




ну выбирай пока 2мя запросами
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table` WHERE idObj=11 HAVING col=MIN(col)
  2. SELECT * FROM `table` WHERE idObj=11 ORDER BY col DESC LIMIT 1

(Добавление)
или первый
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table` WHERE idObj=11 ORDER BY col LIMIT 1
это повторы уберет


-----
DDD
 
 Top
caballero
Отправлено: 21 Мая, 2013 - 14:53:54
Post Id


Активный участник


Покинул форум
Сообщений всего: 6001
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table` HAVING price<=MAX(price)


запрос некоректный - ни один промышленный сервер БД такое бы не пропустил

(Отредактировано автором: 21 Мая, 2013 - 14:54:33)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB