Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.061 c
14-1121232587
qwe
2005-07-13 09:29
2005.08.07
Письма, письма, писма, ........?!!!???


6-1114460382
Erich
2005-04-26 00:19
2005.08.07
Аналог HyperTerminal


1-1121664185
Viktop
2005-07-18 09:23
2005.08.07
Поиск вхождения всех строк в указанную


14-1121748060
lookin
2005-07-19 08:41
2005.08.07
Помогите перевести фразу...


3-1119619132
dUM
2005-06-24 17:18
2005.08.07
Изменение активной записи по скролбару...:(





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский