Главная страница
    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.053 c
14-1121353595
Сибиряк
2005-07-14 19:06
2005.08.07
Портировать с РНР на Delphi.


1-1121951579
<Lelik>
2005-07-21 17:12
2005.08.07
про создание фрейма


1-1121849679
Dust
2005-07-20 12:54
2005.08.07
Качественный код


1-1121944216
Profik
2005-07-21 15:10
2005.08.07
Обработка нажатия стандартной кнопки Свернуть


4-1118310753
Vovaka
2005-06-09 13:52
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский