Форум: "Базы";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
Внизmysql group Найти похожие ветки
← →
Jungle Forever! (2005-06-27 21:26) [0]совершенно дурацкая проблема: delphi ругаеться на такой запрос:
select reglist.*, count(reglist.cl_id) as cnt from reglist inner join adressbook on adressbook.id=reglist.cl_id where reglist.d_vis>1000 group by adressbook.phone
говорит "Unknow table "adressbok" in group statement"
(эта таблица есть, все поля учавствующие в запросе существуют)
если убрать where, то запрос выполняется.
этот запрос не работает только в delphi. шэл мускула его переваривает правильно. В чем может быть дело? работаю через DBExpress, версия mysql 3.23
← →
ЮЮ © (2005-06-28 04:12) [1]>шэл мускула его переваривает правильно
Заменяет на правильный, наверное :)
А правильно, когда в select указаны те поля, что и в group by + агрегатные функции по любым полям:
select adressbook.phone, count(reglist.cl_id)
...
group by adressbook.phone
← →
sniknik © (2005-06-28 08:24) [2]> А правильно, когда в select указаны те поля, что и в group by
необязательно, аксесс и mssql во всяком случае легко без этого указания обходятся. другое дело както бессмысленно агрегаты получать и без указания по чему.
ошибка у него скорее всего изза *, т.к. чего точно нельзя так это "левых" полей которые и не в групировке и не в агрегатных функциях.
возможно(х.з. что там за синтаксис у mysql превилен) убрать его и зарабатает (вернее синтаксис будет правилен но результат... непонятен).
так
select count(r.cl_id) as cnt from reglist r inner join adressbook a on a.id=r.cl_id where r.d_vis>1000 group by a.phone
← →
ЮЮ © (2005-06-28 09:51) [3]На MS SQL вешать всех мертвецов не надо. В этом случае получаем:
Server: Msg 8120, Level 16, State 1, Line 1
Column <имя таблицы>.<имя поля> is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
И так по всем полям, скрывшимися за звёздочкой
← →
Anatoly Podgoretsky © (2005-06-28 09:54) [4]Использовать звездочки вообще то является служебным преступлением.
← →
evvcom © (2005-06-28 15:23) [5]1. Нафига group by adressbook.<поле>, если в select вообще нет ничего из adressbook? (Правильно пишется address)
2. Судя по всему adressbook - это справочник адресов. reglist.cl_id - ссылается на adressbook (многие к одному). Тогда нафига джойнить к запросу adressbook, если в select опять ничего не вытаскивается из adressbook?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.053 c