Как сделать выборку из таблицы где связь многие ко многим

Задача получиться имя тоня и книги, которая она написала. Попытки не венчались успехом. Остановился на приблеженной идеи, где получается получить только ид. Как получить имя и название книг ?

create table Author (
    id int primary key auto_increment,
    first_name varchar (20),
    last_name varchar (20)
);

create table Book (
    id int primary key auto_increment,
    title varchar (20),
    price decimal(10,2)
);


create table AuthorBook (
    id int primary key auto_increment,
    author_id int,
    book_id int,
    foreign key(author_id) references Author(id),
    foreign key(book_id) references Book(id)
);

insert into Author (first_name, last_name)
values ('Tonya', 'Kupra'),
('Jana', 'Dorina'),
('Dmitro', 'Ishkin');

insert into Book (title, price)
values ('Killstart', 10),
('Tor', 50),
('hello', 40);


insert into AuthorBook(author_id,book_id) values
(1,1),
(1,2),
(2,1);

select author_id, book_id from AuthorBook where author_id = (select id from Author where Author.first_name = 'Tonya')

Ответы (1 шт):

Автор решения: SwaD

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

select a.first_name, a.last_name, b.title, b.price 
from Author a
join AuthorBook ab on a.id=author_id
join Book b on b.id = ab.book_id
where a.first_name = 'Tonya'

В вашем исполнении, вы выбирали только поля из таблицы AuthorBook

→ Ссылка