![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: нет Всего: 317 |
подучиваюсь, решаю задачки. есть таблица:
статьи(идентификатор,автор,данныеостатье) идентификатор - уникальный. надо составить запрос, который выведет автора, у которого больше всего статей. это не подвязано к какой-то БД, "чистый" SQL. можно юзать: select,view,count(),max(),union,intersect,except и т.д. можно делать несколько views. создал view:
теперь надо "как-то" продвигаться дальше, но я не вдупляю как "дальше быть". ткните носом куда копнуть! я пока читаю что к чему, может у кого идея будет. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
bilbobagginz |
|
||||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: нет Всего: 317 |
понял, что надо:
a потом:
получается. -------------------- Я ещё не демон. Я только учусь. |
||||
|
|||||
while |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 25.7.2008 Репутация: нет Всего: нет |
Если одним запросом:
select идентификатор, автор, данныеостатье from TABLE where идентификатор in (select max(COUNT_FIELD) from (select count(автор) as COUNT_FIELD from TABLE group by автор)) С использованием процедур: зависит от СУБД ![]() Это сообщение отредактировал(а) while - 29.7.2008, 00:32 |
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: нет Всего: 317 |
while, извините за вопрос: я ошибаюсь, или вы предположили что имя таблицы - "TABLE".
я новичок в SQL, но ужасно дотошный индивид! -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
while |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 25.7.2008 Репутация: нет Всего: нет |
Конечно, предположил. TABLE - некоторая таблица...
![]() |
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: нет Всего: 317 |
т.е.вашим путём я получаю:
но с т.з. временной сложности (т.е. эффективности) оба решения идентичны... или нет ? -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
while |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 25.7.2008 Репутация: нет Всего: нет |
Да.
А вот это уже отчасти зависит от СУБД, кол-ва записей, наличия индексов и т.д. ![]() С применением хранимых процедур, курсоров - выйдет быстрее, но их реализация сильно зависит от СУБД. Это сообщение отредактировал(а) while - 29.7.2008, 01:08 |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Товарищ просил а как там с подзапросами? К тому же не требуется инфа по самим статьям - потому вьюв по авторам, который написАл bilbobagginz, одновременно является и требуемым запросом. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: нет Всего: 317 |
насколько я понял задание - в "нашем" SQL есть подзапросы. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
Akina |
|
||||||||||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Ну так
Если же использовать вьюху
Это сообщение отредактировал(а) Akina - 30.7.2008, 18:04 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||||||||
|
|||||||||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: нет Всего: 317 |
Akina, хмм.. упрощаться-то он упрощается, только вот вопрос: в чем тут выгода.
не может же быть, что всё прям так в шоколаде ? чем я заплатил (кроме мысли) создав 2 вью ? -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
зависит от оптимизатора. в случае сложных многоуровневых запросов я бы убедился, что "вьюшность" запроса не мешает оптимизатору выбирать подходящие индексы. кроме того, некоторые(скорее всего - все) СУБД(MSSQL - точно, проверено опытом) накладывают ограничения на количество вьюшек в одном запросе(а если у тебя вьюшки на вьюшках созданы, то вполне безобидный с первого взгляда запрос может не выполняться...) |
|||
|
||||
ТоляМБА |
|
||||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 4 Всего: 252 |
Это всё конечно хорошо, но давайте спустимся не грешную землю и возьмем ситуацию из реальной жизни. Несколько авторов написали несколько статей от 2 до 5 к примеру, но Петров написал 10 статей и Петров не отстал в количестве, то есть тоже 10 написал.
Рассматривая запросы: Получим обоих авторов, как и надо. Мы же других критериев отбора не вводим. А кого мы получим используя
Для MS-SQL в данном случае используется:
|
||||
|
|||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |