Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.07;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.058 c
5-1092297064
AlexFe
2004-08-12 11:51
2005.08.07
Изменение размера ComboBox


14-1121430748
Igorek
2005-07-15 16:32
2005.08.07
Дельфимастер проснулся :)


14-1121255445
Juice
2005-07-13 15:50
2005.08.07
2000 + 98 = 98


8-1112757340
poha
2005-04-06 07:15
2005.08.07
Gif


14-1120845166
gn
2005-07-08 21:52
2005.08.07
Тотальный контроль ожидается к 2010 году