MySQL Подскажите как найти авторов, книги которых никогда не выдавал библиотекарь конкретной должности
Могу вывести только должности и какие авторов каких книг выдал:
SELECT
positions,
GROUP_CONCAT( DISTINCT book_works.author ) as author
FROM book_delivery
JOIN book_works USING(name_book)
JOIN library_staff USING(fio)
GROUP BY positions
ORDER BY positions;
А как найти авторов, книги которых никогда не выдавал библиотекарь конкретной должности?
select author from book_works
where book_works.author not in (select author from book_delivery );
Схема базы данных:
CREATE TABLE book_works
(
name_book varchar(15) NOT NULL PRIMARY KEY,
author varchar (15) NOT NULL
);
CREATE TABLE book_delivery
(
id_delivery int NOT NULL AUTO_INCREMENT,
fio varchar(25) NOT NULL,
name_book varchar(15) NOT NULL,
PRIMARY KEY (id_delivery),
FOREIGN KEY (name_book) REFERENCES book_works(name_book),
FOREIGN KEY (fio) REFERENCES library_staff(fio)
);
CREATE TABLE library_staff
(
fio varchar(25) NOT NULL,
positions varchar(10) NOT NULL,
PRIMARY KEY (fio)
);
Ответы (1 шт):
Автор решения: Sergey Rufanov
→ Ссылка
Cамое простое - взять список всех авторов книг, да из него убрать тех, книги которых когда-либо выдавались работниками указанной должности:
select distinct author
from book_works w
where w.author not in (
select w.author
from book_delivery d
join book_works w on w.name_book = d.name_book
join library_staff s on s.fio = d.fio
where
s.positions = 'должность'
)