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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2012, 23:55   #1
Miller-1981
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 89
По умолчанию Помошь в запросе

Вывести название музея, в коллекции которых находится наибольшее количество полотен с id_autora=2.
Получается поставить > какого числа. а как реализовать для наибольшего числа?

Вот этот запрос проходить когда >2 например - а как вставить в него максимальное кол-во, а max(count) ставить нельзя.

select museum.name_museum, from museum inner join pictures on museum.id_museum=pictures.id_museum
group by museum.name_museum, pictures.id_autora having count(pictures.id_picture)>2 and pictures.id_autora=2
Miller-1981 вне форума Ответить с цитированием
Старый 16.12.2012, 00:09   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Для MS SQL должно подойти
Код:
select TOP 1 museum.name_museum,count(pictures.id_picture)
  from museum inner join pictures on museum.id_museum=pictures.id_museum
  where pictures.id_autora=2 
  group by museum.name_museum
  ORDER BY 2 DESC
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 16.12.2012 в 00:35.
Аватар вне форума Ответить с цитированием
Старый 16.12.2012, 00:40   #3
Miller-1981
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Для MS SQL должно подойти
Код:
select TOP 1 museum.name_museum,count(pictures.id_picture)
  from museum inner join pictures on museum.id_museum=pictures.id_museum
  where pictures.id_autora=2 
  group by museum.name_museum
  ORDER BY 2 DESC
На стандартном sql нельзя разве. Если вводить дополнительные операторы, то тогда уж легче создать таблицу дополнительную со значениями количеств и оттуда дергать максимальную.

max(count) -sql не позволяет подряд 2 функции писать
Miller-1981 вне форума Ответить с цитированием
Старый 16.12.2012, 00:49   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Что такое стандартній SQL? Реализации языка обычно отличаются для разных СУБД. Любой запрос вообще-то отлаживается и работает на конкретной СУБД. И где там дополнительные операторы? having убрал, обычно одно из мало эффективных мест на больших объемах данных. ORDER добавил, впрочем тоже не особо эффективный прием. С max(count) не подумал, поэтому и убрал
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 16.12.2012 в 00:52.
Аватар вне форума Ответить с цитированием
Старый 16.12.2012, 00:52   #5
Miller-1981
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Что такое стандартній SQL? Реализации языка обычно отличаются для разных СУБД. Любой запрос вообще-то отлаживается и работает на конкретной СУБД.
а что такое TOP 1???

я вот вам запрос привел в вопросе - он пройдет в любой базе по учебнику он соcтавлен на стандартном sql. Вы же привязались в MS SQL.(что тиакое TOP 1 я даже и не знаю) Мне это не надо.
мне например для Oracle надо. а желательно универсальный чтобы я потом его вставил в любую базу.

Хотя идею я вашу понял. Спасибо за вариант. Т.е просортировать весь список по убыванию. а можно ли точную выборку сделать?

Последний раз редактировалось Miller-1981; 16.12.2012 в 00:58.
Miller-1981 вне форума Ответить с цитированием
Старый 16.12.2012, 01:07   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А чего возмущаться то? Ответил, да еще не так. Если для Oracle надо, то так и нужно писать в вопросе. Мои телепатические способности на расстоянии не действуют.И с Oracle хуже, там ROWNUM нужно приспосабливать. Если стандарт позволяет вложеннsе запросы, то только с использованием их можно решить. Дерзайте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна помошь vaauuty Свободное общение 13 08.02.2011 19:02
Помошь с БД Dima_mazhor Помощь студентам 12 20.11.2008 16:13