Search for information not directly related to the database

0

I would like to select the AuthorName , AuthorName , Book_Title attributes from a database that has the Book, Author, and Publisher tables, and EditorName of tables that are not directly related (so to speak), this is the bank structure;


create table if not exists Livro(
Id_livro tinyint auto_increment,
Titulo_livro varchar(45) not null,
Data_publicacao_livro date not null,
primary key(Id_livro)) default charset = utf8;

create table if not exists Autor(
Id_autor tinyint auto_increment,
Nome_autor varchar(45) not null,
Sobrenome_autor varchar(45) not null,
primary key(Id_autor)) default charset = utf8;

create table if not exists Editora(
Id_editora tinyint auto_increment,
Nome_editora varchar(45) not null,
primary key(Id_editora)) default charset = utf8;

/*Um livro pode ter mais de um autor bem como um mesmo titulo pode ser publicado por mais de uma editora 
dessa forma temos um relacionamento de muitos para muitos com cada uma das tabelas*/

create table if not exists Publicado( -- Essa tabela relaciona o livro com a editora
Id_livro tinyint not null,
Id_editora tinyint not null,
primary key(Id_livro, Id_editora),
foreign key(Id_livro) references Livro(Id_livro),
foreign key(Id_editora) references Editora(Id_editora));

create table if not exists Escrito( -- Relaciona o livro com os autores
Id_livro tinyint not null,
Id_autor tinyint not null,
primary key(Id_livro, Id_autor),
foreign key(Id_livro) references Livro(Id_livro),
foreign key(Id_autor) references Autor(Id_autor));

I use a simple inner join? or does a subquery need to be done?

    
asked by anonymous 12.07.2017 / 02:23

1 answer

0

I think it's just a simple select with joins:

Select 
e.id_livro,
a.nome_autor,
a.sobrenome_autor,
l.titulo_livro,
coalesce(d.nome_editora,'Não Publicado') as nome_editora
from escrito e
inner join livro l on l.id_livro = e.id_livro
inner join autor a on a.id_autor = e.id_autor
left outer join publicado p on p.id_livro = e.id_livro
left outer join editora d on d.id_editora = p.id_editora
    
12.07.2017 / 02:36