LINUX.ORG.RU

Помогите с запросом на PostgreSQL

 ,


0

1

База данных

create table books(
id integer GENERATED BY DEFAULT AS IDENTITY PRIMARY key,
title text
);

create table authors(
id integer GENERATED BY DEFAULT AS IDENTITY PRIMARY key,
last_name text,
first_name text,
second_name text
);

create table authorship(
book_id integer references books(id),
author_id integer references authors(id),
seq_num integer
);

insert into books
values
(1, 'Сказка о царе Салтане'),
(2, 'Муму'),
(3, 'Трудно быть богом'),
(4, 'Война и мир'),
(5, 'Путешествие в некоторые удаленные страны мира в четырех частях: сочинение Лемуэля Гулливера, сначала хирурга, а затем капитана нескольких кораблей'),
(6, 'Хрестоматия');

insert into authors
values
(1, 'Пушкин', 'Александр', 'Сергеевич'),
(2, 'Тургенев', 'Иван', 'Сергеевич'),
(3, 'Стругацкий', 'Борис', 'Натанович'),
(4, 'Стругацкий', 'Аркадий', 'Натанович'),
(5, 'Толстой', 'Лев', 'Николаевич'),
(6, 'Свифт', 'Джонатан', '');

insert into authorship
values
(1,1,1),
(2,2,1),
(3,3,2),
(3,4,1),
(4,5,1),
(5,6,1),
(6,1,1),
(6,5,2),
(6,2,3);

Задание

Выполнить следующие задания, скрипт запросов и результаты выполнения занесите в отчет:

·   Реализуйте скрипт, позволяющий удалить все пользовательские объекты с базы данных. Код запроса, результат (до и после) отобразить в отчете

 · Создайте функцию имя книги(book_name) для формирования названия книги. Функция принимает два параметра (идентификатор    книги(id) и заголовок(tittle)) и возвращает строку, составленную из заголовка и списка авторов в порядке seq_num. Имя каждого

автора формируется функций author_name. Создайте представление, в котором указывается идентификатор книги, вызов созданной функции (Исходные данные находятся в файле: «book_shop.txt» и «log_schema_book_shop.png»).

 · Измените созданную функцию: если у книги больше двух авторов, то в названии указываются только первые два и в конце добавляется "и д.р.". Пример:

           Выводится: "Хрестоматия. Пушкин А. С., Толстой Л. Н., Тургенев И. С."
           Ожидается: Хрестоматия. Пушкин А. С., Толстой Л. Н. и др.


Последнее исправление: hobbit (всего исправлений: 4)

Ответ на: комментарий от Dm1Tr0N

Подсказка 1. В SQL есть строковые операции и функции, с их помощью вполне можно, скажем, объединить несколько полей одного запроса с необходимым форматированием.

Подсказка 2. Один запрос может быть по нескольким таблицам.

Другое дело, что у тебя там ещё и условия, на чистом SQL это реализуемо, но выглядеть будет довольно страшненько.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от Dm1Tr0N

Дяденька, дайте попить. А то так есть хочется, что переночевать негде.

знаний не хватает что бы сделать то что от меня просят

Ну так и объясни тем кто просит, что они ошиблись и не за того тебя принимают.

no-such-file ★★★★★
()
Ответ на: комментарий от Dm1Tr0N
SELECT
	x.a[1]
	||
	CASE WHEN x.a[2] IS NOT NULL THEN ', ' || x.a[2] ELSE '' END
	||
	CASE WHEN x.a[3] IS NOT NULL THEN ' и др.' ELSE '' END 
FROM (
	SELECT
		array_agg(a.title) AS a
	FROM
		(VALUES(1,'Пушкин'),(2,'Толстой'),(3,'Фонвизин')) AS a(id,title)
) x
Toxo2 ★★★
()
Ответ на: комментарий от cocucka

Тут тебе помогут: https://chat.openai.com/chat

А для РФ закрыто, и VPN не помогает, требуют номер телефона. Так что пока массового выполнения работ, написания сочинений и дипломов от GPT тут можно не опасаться.

soomrack ★★★★
()

удалить все пользовательские объекты с базы данных

с базы данных

с

посанчик, ты с какого раёна?

что это вообще за набор слов? реализуйте скрипт, позволяющий бла-бла..

man DROP ?

mrjaggers
()