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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2012, 22:19   #1
KrotikDJ
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 38
По умолчанию SQL-запрос

Реализовать SQL запрос:
1. Вывести самую популярную услугу.

Буду чрезмерно благодарен тому, кто откликнется!
Восхвалять буду всю жизнь!

Готов положить денег на телефон.
Вложения
Тип файла: rar Таблицы.rar (29.6 Кб, 14 просмотров)
KrotikDJ вне форума Ответить с цитированием
Старый 05.06.2012, 22:40   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Восхвалять буду всю жизнь!
Ok!!!
Код:
По ветке услуг

SELECT TOP 1 T.ID_услуги,COUNT(*) AS CountRec
  FROM [Типы услуг] T,Услуги Y,Сессии S
  WHERE T.ID_услуги=Y.ID_услуги AND Y.ID_сессии=S.ID_сессии
  GROUP BY T.ID_услуги
  ORDER BY 2 DESC

По ветке договоров

SELECT TOP 1 T.ID_услуги,COUNT(*) AS CountRec
  FROM [Типы услуг] T,[Услуги в договоре] Y,Договоры S
  WHERE T.ID_услуги=Y.ID_услуги AND Y.[№_договора]=S.[№_договора]
  GROUP BY T.ID_услуги
  ORDER BY 2 DESC

TOP 1 не для всех СУБД, может по другому быть
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 05.06.2012 в 22:52.
Аватар вне форума Ответить с цитированием
Старый 06.06.2012, 08:06   #3
KrotikDJ
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 38
По умолчанию

А что значит Top 1 ?=))
И 2 ?=))

И можно, чтобы выводилась на ID_услуги, а само название услуги?=))

Последний раз редактировалось KrotikDJ; 06.06.2012 в 08:07. Причина: Опечатка
KrotikDJ вне форума Ответить с цитированием
Старый 06.06.2012, 08:27   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А в описание синтаксиса SQL-команд заглянуть не судьба?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.06.2012, 08:41   #5
KrotikDJ
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 38
По умолчанию

Можно, чтобы не ID_услуги, а название выводилось?)
KrotikDJ вне форума Ответить с цитированием
Старый 06.06.2012, 09:02   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так, в порядке бреда...

Код:
select TT.[Название_услуги] from
(SELECT TOP 1 T.ID_услуги,COUNT(*) AS CountRec
  FROM [Типы услуг] T,Услуги Y,Сессии S
  WHERE T.ID_услуги=Y.ID_услуги AND Y.ID_сессии=S.ID_сессии
  GROUP BY T.ID_услуги
  ORDER BY 2 DESC) AA, [Типы услуг] TT
where AA.ID_услуги = TT.ID_услуги
или даже так:
Код:
SELECT TOP 1 T.[Название_услуги], T.ID_услуги, COUNT(*) AS CountRec
  FROM [Типы услуг] T, Услуги Y, Сессии S
  WHERE T.ID_услуги=Y.ID_услуги AND Y.ID_сессии=S.ID_сессии
  GROUP BY T.ID_услуги
  ORDER BY 2 DESC

Последний раз редактировалось Serge_Bliznykov; 06.06.2012 в 09:08.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.06.2012, 12:06   #7
KrotikDJ
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 38
По умолчанию

[QUOTE=Serge_Bliznykov;1057038]так, в порядке бреда...

Код:
select TT.[Название_услуги] from
(SELECT TOP 1 T.ID_услуги,COUNT(*) AS CountRec
  FROM [Типы услуг] T,Услуги Y,Сессии S
  WHERE T.ID_услуги=Y.ID_услуги AND Y.ID_сессии=S.ID_сессии
  GROUP BY T.ID_услуги
  ORDER BY 2 DESC) AA, [Типы услуг] TT
where AA.ID_услуги = TT.ID_услуги
Объясните, пожалуйста, словами как реализуется данный запрос?

Можно сделать без всяких TT, T, Y, S, AA... Напишите, пожалуйста полные названия таблиц/полей...

Последний раз редактировалось KrotikDJ; 07.06.2012 в 12:31.
KrotikDJ вне форума Ответить с цитированием
Старый 07.06.2012, 13:39   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Объясните, пожалуйста, словами как реализуется данный запрос?
выбрать во внутреннем подзапросе нужный ID_услуги, во внешнем запросе связать с таблицей Типы услуг и по этому ID_услуги получить Название услуги

Цитата:
Можно сделать без всяких TT, T, Y, S, AA... Напишите, пожалуйста полные названия таблиц/полей...
эти "TT, T, Y" называются АЛИАСАМИ (псевдонимами) БД.
и, имхо, полностью от них избавится не получится...
ну, вот так можно:
Код:
select [Типы услуг].[Название_услуги] from
(SELECT TOP 1 [Типы услуг].ID_услуги, COUNT(*) AS CountRec
  FROM [Типы услуг],[Услуги],[Сессии]
  WHERE [Типы услуг].ID_услуги=[Услуги].ID_услуги AND [Услуги].ID_сессии=[Сессии].ID_сессии
  GROUP BY [Типы услуг].ID_услуги
  ORDER BY 2 DESC) MostUsedService, [Типы услуг]
where MostUsedService.ID_услуги = [Типы услуг].ID_услуги
Во-первых, запрос работает или нет?!
Во-вторых, чем Вам алиасы таблиц/подзапросов не угодили?!

В-третьих, Вас спасибо говорить не учили?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.06.2012, 16:33   #9
KrotikDJ
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
выбрать во внутреннем подзапросе нужный ID_услуги, во внешнем запросе связать с таблицей Типы услуг и по этому ID_услуги получить Название услуги


эти "TT, T, Y" называются АЛИАСАМИ (псевдонимами) БД.
и, имхо, полностью от них избавится не получится...
ну, вот так можно:
Код:
select [Типы услуг].[Название_услуги] from
(SELECT TOP 1 [Типы услуг].ID_услуги, COUNT(*) AS CountRec
  FROM [Типы услуг],[Услуги],[Сессии]
  WHERE [Типы услуг].ID_услуги=[Услуги].ID_услуги AND [Услуги].ID_сессии=[Сессии].ID_сессии
  GROUP BY [Типы услуг].ID_услуги
  ORDER BY 2 DESC) MostUsedService, [Типы услуг]
where MostUsedService.ID_услуги = [Типы услуг].ID_услуги
Во-первых, запрос работает или нет?!
Во-вторых, чем Вам алиасы таблиц/подзапросов не угодили?!

В-третьих, Вас спасибо говорить не учили?!
Все прекрасно работает!=))
Спасибо большое!=))
Очень выручили!=))

А что такое CountRec и MostUsedService ?=))

^^

Последний раз редактировалось KrotikDJ; 08.06.2012 в 16:41.
KrotikDJ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запрос sql s2dentishe БД в Delphi 2 24.05.2010 01:15
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
SQL-запрос Alexey_vyb БД в Delphi 4 22.05.2007 18:52
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15