Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: выбор данных из MySQL [2]
Форумы портала PHP.SU » » Вопросы новичков » выбор данных из MySQL

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

16. Saymor - 21 Мая, 2013 - 11:53:12 - перейти к сообщению
LIME пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table` WHERE idObj=11
а это выдает?

Да, конечно! выдаёт все объекты с idObj =11
17. LIME - 21 Мая, 2013 - 12:08:22 - перейти к сообщению
почему-то работает только
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 примерно...а оно одну возвращает!!!
магия!!!
алерт!!!алерт!!!
18. imya - 21 Мая, 2013 - 12:57:26 - перейти к сообщению
А группировать кто будет? С группировкой должно работать. HAVING ведь работает с группами.
19. LIME - 21 Мая, 2013 - 13:17:48 - перейти к сообщению
imya пишет:
А группировать кто будет?
Пушкин !!! харош чушь нести...без групп агрегируются все ряды
20. imya - 21 Мая, 2013 - 13:52:30 - перейти к сообщению
LIME пишет:
Пушкин !!! харош чушь нести...без групп агрегируются все ряды


Да, действительно , неправ, прошу прощения.
21. DeepVarvar - 21 Мая, 2013 - 13:56:16 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM tbl ORDER BY price DESC
  2. UNION ALL
  3. SELECT * FROM tbl ORDER BY price ASC

Не?
22. LIME - 21 Мая, 2013 - 13:58:41 - перейти к сообщению
DeepVarvar да пофиг!!!
почему MIN работает а MAX нет???!!!
(Добавление)
тем более в UNION сортировка идет только после всех выборок
23. imya - 21 Мая, 2013 - 14:13:30 - перейти к сообщению
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.

Не знаю, как у вас, а у меня на выборку всех строк он ругается, потому что не знает по какому полю ему агрегировать.
24. LIME - 21 Мая, 2013 - 14:15:02 - перейти к сообщению
а теперь убери having и удивись что вернулась 1 строка и там нечему агрегироваться после выборки
(Добавление)
и уж тем более нет blocked в результате
25. imya - 21 Мая, 2013 - 14:17:44 - перейти к сообщению
LIME пишет:
а теперь убери having и удивись что вернулась 1 строка и там нечему агрегироваться после выборки
(Добавление)
и уж тем более нет blocked в результате


Да, и ?

Я к тому, если делать выборку всех полей - работать не будет.
26. LIME - 21 Мая, 2013 - 14:22:31 - перейти к сообщению
imya перестань с умным видом нести ахинею
как происходит выборка(индексы опустим)
для каждого ряда вычисляется условие в WHERE и если верно то ряд попадает в результирующую таблицу
ессесно мы не можем в выражении использовать заранее неизвестные результаты агрегирующих ф-ций
для этого и придуман HAVING
чтоб еще раз по результату пробежаться
а у тебя поля blocked нет в результатах
осознай и то что MIN РАБОТАЕТ!!!! в моих примерах
внимательно перечитай описанные мной странности
27. imya - 21 Мая, 2013 - 14:27:55 - перейти к сообщению
Мы друг друга неправильно поняли и незачем из-за этого оскорблять.
Подмигивание
Напомнило "Я тебе про Фому, а ты мне про Ерёму"
28. Saymor - 21 Мая, 2013 - 14:45:47 - перейти к сообщению
нет, ну а мне-то что делать господа?
29. LIME - 21 Мая, 2013 - 14:49:53 - перейти к сообщению
ну выбирай пока 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
это повторы уберет
30. caballero - 21 Мая, 2013 - 14:53:54 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table` HAVING price<=MAX(price)


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

 

Powered by ExBB FM 1.0 RC1