Главная страница
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.48 MB
Время: 0.044 c
14-1121141992
DelphiN!
2005-07-12 08:19
2005.08.07
Как моей программе узнать, что под столом нажали на кнопку


3-1120037402
3DxFantastika
2005-06-29 13:30
2005.08.07
SQL-запрос (для форума)


6-1114670407
Pavelkq
2005-04-28 10:40
2005.08.07
NMFTP + Nlist = Range check error


3-1119542398
Koala
2005-06-23 19:59
2005.08.07
Помогите организовать ХП (Firebird)


3-1120452796
leonidus
2005-07-04 08:53
2005.08.07
Как связать таблицы с использованием движка ADO