Tenho um banco com uma tabela Autor e um com a tabela Documento, ambos com uma coluna ID. Além disso, tenho uma tabela AutorDocumento, onde a coluna Documento_ID é relacionada à coluna Autor_ID (representando o(s) autor(es) que escreveram o Documento). Por fim, tenho uma tabela ResourceID, onde existem as colunas `type`, URI e target. A coluna target representa o ID de outra tabela, seja ela Autor ou Documento. A coluna `type` representa o tipo do ID (1 para autor, 2 para documento). A coluna URI é o elemento final que estou buscando.
Meu problema: Desejo linkar o URI de um documento ao URI de seu respectivo autor em uma única linha, usando um único select. Como sou novo em MySQL e em bancos de dados no geral, não estou conseguindo achar a query correta. Até agora, o mais próximo que cheguei foi:
select r.uri, t.uri, nome_completo, titulo from Autor a join Documento d join AutorDocumento ad join ResourceID r join ResourceID t on a.id = ad.Autor_id and d.id = ad.Documento_id and a.id = r.target and r.`type` = 1 and d.id = t.target and t.`type` = 2
Porém ele dá timeout e não compila. Se eu retirar o join com ResourceID t, ela compila, mas não apresenta o resultado que eu desejo, pois só mostrará o URI do Autor. Poderiam me dar uma sugestão de como eu posso resolver isso?
Obs.: As colunas nome_completo e titulo são, respectivamente, pertencentes às tabelas Autor e Documento, utilizadas apenas para melhor visualização da tabela.
Obs2.: Fiz o seguinte esboço no excel para tentar ilustrar um pouco as tabelas que já tenho e a tabela que desejo obter: https://ibb.co/SDkTTD0
Pergunta
eduardodias
Boa noite,
Tenho um banco com uma tabela Autor e um com a tabela Documento, ambos com uma coluna ID. Além disso, tenho uma tabela AutorDocumento, onde a coluna Documento_ID é relacionada à coluna Autor_ID (representando o(s) autor(es) que escreveram o Documento). Por fim, tenho uma tabela ResourceID, onde existem as colunas `type`, URI e target. A coluna target representa o ID de outra tabela, seja ela Autor ou Documento. A coluna `type` representa o tipo do ID (1 para autor, 2 para documento). A coluna URI é o elemento final que estou buscando.
Meu problema: Desejo linkar o URI de um documento ao URI de seu respectivo autor em uma única linha, usando um único select. Como sou novo em MySQL e em bancos de dados no geral, não estou conseguindo achar a query correta. Até agora, o mais próximo que cheguei foi:
select r.uri, t.uri, nome_completo, titulo from Autor a join Documento d join AutorDocumento ad join ResourceID r join ResourceID t on a.id = ad.Autor_id and d.id = ad.Documento_id and a.id = r.target and r.`type` = 1 and d.id = t.target and t.`type` = 2
Porém ele dá timeout e não compila. Se eu retirar o join com ResourceID t, ela compila, mas não apresenta o resultado que eu desejo, pois só mostrará o URI do Autor. Poderiam me dar uma sugestão de como eu posso resolver isso?
Obs.: As colunas nome_completo e titulo são, respectivamente, pertencentes às tabelas Autor e Documento, utilizadas apenas para melhor visualização da tabela.
Obs2.: Fiz o seguinte esboço no excel para tentar ilustrar um pouco as tabelas que já tenho e a tabela que desejo obter: https://ibb.co/SDkTTD0
Obrigado desde já.
Eduardo.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.