| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > запрос-репорт |
| Автор: bilbobagginz 28.7.2008, 23:08 | ||
| подучиваюсь, решаю задачки. есть таблица: статьи(идентификатор,автор,данныеостатье) идентификатор - уникальный. надо составить запрос, который выведет автора, у которого больше всего статей. это не подвязано к какой-то БД, "чистый" SQL. можно юзать: select,view,count(),max(),union,intersect,except и т.д. можно делать несколько views. создал view:
теперь надо "как-то" продвигаться дальше, но я не вдупляю как "дальше быть". ткните носом куда копнуть! я пока читаю что к чему, может у кого идея будет. |
| Автор: bilbobagginz 28.7.2008, 23:43 | ||||
понял, что надо:
a потом:
получается. |
| Автор: while 29.7.2008, 00:30 |
| Если одним запросом: select идентификатор, автор, данныеостатье from TABLE where идентификатор in (select max(COUNT_FIELD) from (select count(автор) as COUNT_FIELD from TABLE group by автор)) С использованием процедур: зависит от СУБД |
| Автор: bilbobagginz 29.7.2008, 00:37 |
| while, извините за вопрос: я ошибаюсь, или вы предположили что имя таблицы - "TABLE". я новичок в SQL, но ужасно дотошный индивид! |
| Автор: while 29.7.2008, 00:39 |
| Конечно, предположил. TABLE - некоторая таблица... |
| Автор: bilbobagginz 29.7.2008, 00:44 | ||
т.е.вашим путём я получаю:
но с т.з. временной сложности (т.е. эффективности) оба решения идентичны... или нет ? |
| Автор: while 29.7.2008, 01:06 | ||||
Да.
А вот это уже отчасти зависит от СУБД, кол-ва записей, наличия индексов и т.д. С применением хранимых процедур, курсоров - выйдет быстрее, но их реализация сильно зависит от СУБД. |
| Автор: Akina 29.7.2008, 07:50 |
Товарищ просил а как там с подзапросами? К тому же не требуется инфа по самим статьям - потому вьюв по авторам, который написАл bilbobagginz, одновременно является и требуемым запросом. |
| Автор: bilbobagginz 30.7.2008, 17:51 |
насколько я понял задание - в "нашем" SQL есть подзапросы. |
| Автор: Akina 30.7.2008, 17:58 | ||||||||||
Ну так
Если же использовать вьюху
|
| Автор: bilbobagginz 31.7.2008, 20:27 |
| Akina, хмм.. упрощаться-то он упрощается, только вот вопрос: в чем тут выгода. не может же быть, что всё прям так в шоколаде ? чем я заплатил (кроме мысли) создав 2 вью ? |
| Автор: skyboy 31.7.2008, 20:32 |
зависит от оптимизатора. в случае сложных многоуровневых запросов я бы убедился, что "вьюшность" запроса не мешает оптимизатору выбирать подходящие индексы. кроме того, некоторые(скорее всего - все) СУБД(MSSQL - точно, проверено опытом) накладывают ограничения на количество вьюшек в одном запросе(а если у тебя вьюшки на вьюшках созданы, то вполне безобидный с первого взгляда запрос может не выполняться...) |