| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [SQL&Oracle] Написать представление |
| Автор: vzf 7.1.2007, 23:55 | ||||
| Помогите пожалуйста написать представления для БД Oracle Задание следующее. Библиотечный каталог реализован тремя таблицами:
Необходимо написать представление FolioForRef, которое перечисляет книги со специально сгенерированным ссылочным кодом.Ссылочный код представляет собой конкатенацию фамилии первого (по порядку поля Nr) автора, год издания первой редакции, и дополнительный порядковый номер, если первые два значения не обеспечивают уникальности, с пробелом в качестве разделителя. Дополнительный порядковый номер начинается с единицы и базируется на порядке каталожных номеров. Поля представления: Ref_Code, Title, Edition_Nr, Year, ISBN, Category_Code Представление необходимо написать без использования аналитических и собственных функций. У меня проблема с дополнительным порядковым номером. Как его добавлять, как опредлить обеспечивают ли два других значения уникальности? Без этого порядкового номера вроде можно написать так:
|
| Автор: achepkunov 8.1.2007, 03:38 | ||||
Задание хитрее, так что "and Book.edition_nr = 1" надо убрать, а вот в ref_code нужно выводить результат подзапроса, достающий первую редакцию книги. Я так понимаю. далее. Если можно всегда писать доп. порядковый номер (1), в этом подзапросе должен быть еже один подзапрос:
если 1 всегда писать нельзя, то туда же добавить decode. Как определить первый год? Хорошо если только по совпадению названия книги. Хуже если по названию и списку авторов, но сделай пока по названию: (select to_char(min(year)) where title = ext.title). Здесь предполагается, что первая редакция вышла раньше всех. И пробел-разделитель to_char вроде сам добавит. |