Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.05.2008, 02:16
sunny-sun sunny-sun вне форума
Прохожий
 
Регистрация: 06.05.2008
Сообщения: 7
Репутация: 10
По умолчанию максимальное количесвто ?...

допустим, есть таблица заказы , в ней указывается id_отеля, на который делается заказ, и дата заказа. Как найти отель, который чаще всего заказывают. Количесвто заказов по каждому отелю нашла :
SELECT отели.Название, Count(заказы.отель) AS [Количество заказов]
FROM отели INNER JOIN заказы ON отели.id_отеля = заказы.отель
GROUP BY отели.Название;
а воть как найти максимальное число заказов, используя этот запрос.
Ответить с цитированием
  #2  
Старый 19.05.2008, 09:55
Аватар для Appolon
Appolon Appolon вне форума
Новичок
 
Регистрация: 10.01.2008
Адрес: гЕйск
Сообщения: 76
Репутация: 16
По умолчанию

Какой СУБД используете?
Ответить с цитированием
  #3  
Старый 19.05.2008, 10:43
Аватар для Appolon
Appolon Appolon вне форума
Новичок
 
Регистрация: 10.01.2008
Адрес: гЕйск
Сообщения: 76
Репутация: 16
По умолчанию

Можно вот так:
Код:
SELECT top 1  отели.Название, Count(заказы.отель) AS [Количество заказов]
FROM отели INNER JOIN заказы ON отели.id_отеля = заказы.отель
GROUP BY отели.Название
order by Count(Таблица2.Заказы) desc
Но этот запрос выдаст только одну запись.

Если вы используете Access, ничего умнее я не придумал кроме:
Код:
SELECT [t1].Название, [t1].[Количество заказов]
FROM (
SELECT отели.Название,  Count(заказы.отель) as [Количество заказов]
FROM отели INNER JOIN заказы ON отели.id_отеля = заказы.отель
group by отели.Название
) AS [t1]

where  [t1].[Количество заказов]=(select max( [t2].[Количество заказов])from (
SELECT отели.Название,  Count(заказы.отель) as [Количество заказов]
FROM отели INNER JOIN заказы ON отели.id_отеля = заказы.отель
group by отели.Название
) as t2)

А если используете SQL Server, тогда:
Код:
declare @t1 table ([Название] varchar (50),[Количество заказов] int)

insert into @t1
SELECT отели.Название,  Count(заказы.отель) as [Количество заказов]
FROM отели INNER JOIN заказы ON отели.id_отеля = заказы.отель
group by отели.Название

select * from @t1 as t1 where t1.[Количество заказов]=(select max(t2.[Количество заказов]) from @t1 as t2)
Выбирайте...
Ответить с цитированием
  #4  
Старый 19.05.2008, 12:46
sunny-sun sunny-sun вне форума
Прохожий
 
Регистрация: 06.05.2008
Сообщения: 7
Репутация: 10
По умолчанию

использую access. большое спасибо!
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:27.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter