Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GROUP BY и COUNT 
V
    Опции темы
neokortex
Дата 11.9.2011, 05:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 19.3.2007

Репутация: нет
Всего: нет



Здравствуйте, помогите, пожалуйста с запросом - уже несколько часов мучаюсь.

Есть запрос

Код

SELECT 
`t1`.`lft` , 
`t1`.`rgt` , 
`t1`.`level` ,
`t1`.`id` , 
`t1`.`directory` , 
`t2`.`lft` AS `t2_lft` , 
`t2`.`rgt` AS `t2_rgt` , 
`t2`.`level` AS `t2_level` , 
`t2`.`id` AS `t2_id` , 
`t2`.`directory` AS `t2_directory` , 
COUNT( `t2`.`id` ) AS `childrensMin`
FROM `mm` AS `t1`
LEFT JOIN `mm` AS `t2` ON ( 
    `t2`.`lft` > `t1`.`lft`AND 
    `t2`.`rgt` < `t1`.`rgt`AND 
    `t2`.`position` <4 
)
WHERE `t1`.`id` = '21'
GROUP BY `t2`.`id`
ORDER BY `t2`.`lft` DESC
LIMIT 1 

childrensMin показывает неправильное значение (1). А должно быть 2.

Пробовал много разных вариантов. Если по другому группировать может неправильно показывать другие столбцы :(
PM MAIL   Вверх
rodnover
Дата 11.9.2011, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 7.4.2009

Репутация: 1
Всего: 10



Код

COUNT( `t2`.`id` ) AS `childrensMin
...
GROUP BY `t2`.`id`



Это как вообще работает? И ошибок не выдает?
PM MAIL   Вверх
Zloxa
Дата 11.9.2011, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(rodnover @  11.9.2011,  10:50 Найти цитируемый пост)
Это как вообще работает? И ошибок не выдает? 

Должно работать. Может выдавать в результате  1 или 0. Но как там может быть 2 - не могу представить.



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
neokortex
Дата 11.9.2011, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 19.3.2007

Репутация: нет
Всего: нет



Если сделать 
Код

GROUP BY `t1`.`id`

то в childrensMin показывает что надо, но уже другие значения показывают другое (на одну позицию меньше)

Добавлено через 6 минут и 3 секунды
Понял свою ошибку. Надо было еще один LEFT JOIN сделать, чтобы посчитать.

Это сообщение отредактировал(а) neokortex - 11.9.2011, 18:48
PM MAIL   Вверх
neokortex
Дата 11.9.2011, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 19.3.2007

Репутация: нет
Всего: нет



Правда мне нужно еще одну вещь посчитать, и тут уже GROUP BY либо по одному параметру либо по другому правильно считает :(
PM MAIL   Вверх
Zloxa
Дата 11.9.2011, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



neokortex, если вы ждете помощи, постарайтесь обрисовать цель, а не отдельный, к тому еще не правильно делаемый шаг.

Это сообщение отредактировал(а) Zloxa - 11.9.2011, 20:39


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
neokortex
Дата 11.9.2011, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 19.3.2007

Репутация: нет
Всего: нет



Zloxa, спасибо. Обычно я стараюсь предельно ясно задавать вопрос. Но тут, достаточно сложно обрисовать проблему. 

Но я уже решил - поменял логику скрипта, упростился запрос.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0765 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.