Для связи «многие ко многим» объедините книги с таблицей связей и авторами. 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.