Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 22.04.2014, 12:08   #1
nartov55
Пользователь
 
Регистрация: 25.04.2010
Сообщений: 21
Радость ORA-00979: not a GROUP BY expression

Здравствуйте! Помогите пожалуйста с запросом oracle sql:

Таблица S_ORD содержит информацию о заказах. Поля:
 ID – идентификатор заказа.
 DATE_ORDERED – дата оформления заказа.
 DATE_SHIPPED – дата отгрузки.
 TOTAL – общая стоимость заказа.
 PAYMENT_TYPE – тип оплаты.
 CUSTOMER_ID – ссылка на заказчика.
 SALES_REP_ID – ссылка на торгового представителя.

Таблица S_CUSTOMER содержит информацию о фирмах заказчиках. Поля:
 ID – идентификатор заказчика.
 NAME – название.
 PHONE – телефон.
 ADDRESS – адрес.
 CITY – город.
 STATE – штат.
 COUNTRY – страна.
 ZIP_CODE – почтовый индекс.
 CREDIT_RATING – кредитный рейтинг.
 COMMENTS – комментарии.
 REGION_ID – ссылка на регион.
 SALES_REP_ID – ссылка на торгового представителя.

Необходимо вывести наименование фирмы-клиента и количество сделанных ими заказов.

Я представляю себе это так:

select s_customer.name, count(customer_id) from s_ord inner join s_customer on customer_id=s_customer.id group by customer_id;

Результат немного предсказуем: ORA-00979

Вот этот запрос выводит id фирмы-клиента и количество сделанных заказов:

select customer_id, count(customer_id) from s_ord group by customer_id;

CUSTOMER_ID COUNT(CUSTOMER_ID)
----------- ------------------
213 1
210 2
211 1
201 1
206 1
212 1
202 1
203 1
204 2
208 2

Нужно получить такую таблицу, только вместо CUSTOMER_ID должно быть s_customer.name

Последний раз редактировалось nartov55; 22.04.2014 в 12:18.
nartov55 вне форума
Старый 22.04.2014, 12:14   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А посмотреть синтаксис SELECT-а и место в нем GROUP BY сверх не реальная задача? И добавить в GROUP BY еще Name
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 22.04.2014, 12:18   #3
nartov55
Пользователь
 
Регистрация: 25.04.2010
Сообщений: 21
По умолчанию

Спасибо, работает. select s_customer.name, count(customer_id) from s_ord inner join s_customer on customer_id=s_customer.id group by customer_id, name;

Последний раз редактировалось nartov55; 22.04.2014 в 12:20.
nartov55 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ORA-00604, ORA-01003 BeJIuKuu_Hexo4yxa SQL, базы данных 0 14.11.2011 10:41
ошибка ora-12154 blr_spy БД в Delphi 0 27.02.2011 18:04
Нарисовать красивое окошко. Expression Design, Expression Blend. Векторное изображение. Casper-SC Фриланс 0 09.02.2011 17:59
XLM ошибка ora-31001 D-mon БД в Delphi 0 13.08.2008 15:09
Ora MAcK БД в Delphi 16 10.09.2007 08:55