-- Вывести все книги и их авторов/соавторов в простом табличном виде.

Для связи «многие ко многим» объедините книги с таблицей связей и авторами. LEFT JOIN сохранит книги без автора; соавторы дадут несколько строк на книгу.

Короткий ответ

Что ответить на собеседовании

Для связи «многие ко многим» объедините книги с таблицей связей и авторами. LEFT JOIN сохранит книги без автора; соавторы дадут несколько строк на книгу.

Подробный разбор

Ответ с пояснениями

Условие

-- Вывести все книги и их авторов/соавторов в простом табличном виде. -- Пример:

-- book_name | author_name -- --------------------|------------- -- Мастер и маргарита | Игорь -- Евгений Онегин | Иван

Ответ

Для связи «многие ко многим» объедините книги с таблицей связей и авторами. LEFT JOIN сохранит книги без автора; соавторы дадут несколько строк на книгу.

Если схема состоит из books(id, name), authors(id, name) и book_authors(book_id, author_id), запрос будет таким:

SELECT b.name AS book_name, a.name AS author_name
FROM books AS b
LEFT JOIN book_authors AS ba ON ba.book_id = b.id
LEFT JOIN authors AS a ON a.id = ba.author_id
ORDER BY b.name, b.id, a.name, a.id;

Это явно выбранная примерная схема: имена из реальной БД нужно подставить по её контракту. DISTINCT не требуется, если пара book_id/author_id уникальна. Для вывода только книг с авторами используют INNER JOIN.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее