Multiplas Junções
Boa tarde amigos.
Estou com um bom desafio.
Preciso de uma luz em como fazer junção com 5 tabelas diferentes.
Até agora eu fiz isso:
SELECT n.tit1 AS Titulo, n.year AS Ano, n.code AS ISBN,
n.indexint = 2 AS Nível,
e.expl_typdoc = 27 AS Mídia,
e.expl_location = 4 AS Filial
FROM notices n
INNER JOIN exemplaires e ON n.notice_id = e.expl_notice
Os campos Nível, Mídia e Filial retornam valor 0.
Descobri que cada um tem a sua própria tabela e que poderia utiliza-las.
Os valores que preciso para essa pesquisa não estão nas tabelas utilizadas nessa query (notices e exemplaires).
Qual é a melhor forma de fazer um join com essas 5 tabelas??
Estou com um bom desafio.
Preciso de uma luz em como fazer junção com 5 tabelas diferentes.
Até agora eu fiz isso:
SELECT n.tit1 AS Titulo, n.year AS Ano, n.code AS ISBN,
n.indexint = 2 AS Nível,
e.expl_typdoc = 27 AS Mídia,
e.expl_location = 4 AS Filial
FROM notices n
INNER JOIN exemplaires e ON n.notice_id = e.expl_notice
Os campos Nível, Mídia e Filial retornam valor 0.
Descobri que cada um tem a sua própria tabela e que poderia utiliza-las.
Os valores que preciso para essa pesquisa não estão nas tabelas utilizadas nessa query (notices e exemplaires).
Qual é a melhor forma de fazer um join com essas 5 tabelas??
Andre Teixeira
Curtidas 0
Respostas
Leandro Chiodini
14/01/2014
Boa tarde,
SEria legal voce colocar as outras tabelas,
e quais campos fazem ligação de uma para a outra.
dai fica mais facil montar o select aqui pra ti.
att,
Chiodini
SEria legal voce colocar as outras tabelas,
e quais campos fazem ligação de uma para a outra.
dai fica mais facil montar o select aqui pra ti.
att,
Chiodini
GOSTEI 0
William
14/01/2014
Colega André, como o Leandro já mencionou acima, por gentileza poste as estruturas das tabelas envolvidas e os respectivos campos que tem relacionamento!
GOSTEI 0
Andre Teixeira
14/01/2014
Eu não possuo a estrutura das tabelas e também não encontrei documentação do Banco de dados.
Mas a query já utilizada é essa:
Nós usamos o PMB-PhpMyBibli (http://en.wikipedia.org/wiki/PhpMyBibli)
Catalogamos livros, cd's e dvd's com atribuição de categorias, níveis e filial.
A programação de pesquisas é toda feita em mysql no sistema.
O que a query acima está fazendo é pegar todos os títulos, de todos os níveis, de todas as filiais.
Isso não é muito funcional, pois desejamos usar variáveis para pesquisar os títulos por filial, nível e categoria.
Como isso poderia ser feito, tendo como base o que já existe??
Mas a query já utilizada é essa:
SELECT n.tit1 AS Titulo, n.year AS Ano, n.code AS ISBN, (CASE n.indexint WHEN 1 THEN 'A1' WHEN 2 THEN 'A2' WHEN 4 THEN 'B1' WHEN 5 THEN 'B2' WHEN 8 THEN 'C1' WHEN 7 THEN 'C2' END) AS Nivel, (CASE e.expl_typdoc WHEN 27 THEN 'BD' WHEN 35 THEN 'Livro' WHEN 13 THEN 'CD Audio' WHEN 18 THEN 'Periódicos' WHEN 23 THEN 'T. Lidos' WHEN 54 THEN 'DVD' WHEN 36 THEN 'Livro + CD' WHEN 46 THEN 'Livro pedagógico' WHEN 50 THEN 'Livro + CD pedagógico' WHEN 24 THEN 'Livro + DVD' WHEN 53 THEN 'Matériel Pédagogique' WHEN 52 THEN 'Periódico Pedagógico' WHEN 26 THEN 'Dictionnaire' WHEN 17 THEN 'CD-Roms' END) AS Tipo, (CASE e.expl_statut WHEN 1 THEN 'Bom' WHEN 11 THEN 'Deteriorado' WHEN 12 THEN 'Perdido' WHEN 17 THEN 'Não Devolvido' WHEN 18 THEN 'Setor Pedagógico' END) AS Estado, (CASE e.expl_location WHEN 1 THEN 'Barra' WHEN 2 THEN 'Centro' WHEN 3 THEN 'NS' WHEN 4 THEN 'Botafogo' WHEN 5 THEN 'Copacabana' WHEN 6 THEN 'Tijuca' WHEN 7 THEN 'CG' WHEN 8 THEN 'Ipanema' WHEN 9 THEN 'Recreio' WHEN 10 THEN 'Sede' END) AS Filial FROM notices n INNER JOIN exemplaires e ON n.notice_id = e.expl_notice
Nós usamos o PMB-PhpMyBibli (http://en.wikipedia.org/wiki/PhpMyBibli)
Catalogamos livros, cd's e dvd's com atribuição de categorias, níveis e filial.
A programação de pesquisas é toda feita em mysql no sistema.
O que a query acima está fazendo é pegar todos os títulos, de todos os níveis, de todas as filiais.
Isso não é muito funcional, pois desejamos usar variáveis para pesquisar os títulos por filial, nível e categoria.
Como isso poderia ser feito, tendo como base o que já existe??
GOSTEI 0
William
14/01/2014
André se bem entendi, você quer realizar um JOIN entre 5 tabelas distintas mas não tem a estrutura das tabelas e nem os campos que fazem relacionamento?
Fica meio difícil ajudar ..rssrsrsrs
Fica meio difícil ajudar ..rssrsrsrs
GOSTEI 0
Andre Teixeira
14/01/2014
William, eu perguntei aos mais antigos aqui e ninguém sabe onde tem a documentação do banco ou como foi feita a estrutura das tabelas.
Eu fiz algo que em tese resolveria meu problema.
Mas o mysql informa o seguinte erro:
Eu fiz algo que em tese resolveria meu problema.
SELECT n.tit1, n.year AS Ano, n.code AS ISBN, t.tdoc_libelle AS Mídia, i.indexint_name AS Nível,
l.location_libelle AS Filial
FROM (
SELECT t.tdoc_libelle, t.idtyp_doc, e.expl_typdoc, e.expl_location, l.location_libelle, l.idlocation
FROM exemplaires e
INNER JOIN docs_location l ON e.expl_location = l.idlocation
INNER JOIN docs_type t ON e.expl_typdoc = t.idtyp_doc
) notices n
INNER JOIN (
SELECT i.indexint_name, i.indexint_id, n.indexint
FROM indexint i
INNER JOIN notices n ON i.indexint_id = n.indexint
) exemplaires e
ON n.notice_id = e.expl_notice;Mas o mysql informa o seguinte erro:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'n INNER JOIN ( SELECT i.indexint_name, i.indexint_id, n.indexint FROM in' at line 9
GOSTEI 0
William
14/01/2014
André peço desculpa pela insistência, mas se você está acessando a base normalmente para consulta e só acessar o banco por um gerenciador qualquer (MySQL Workbench, HEIDSQL, PHPMyAdmin etc ...) e copiar a estrutura das tabelas ...
GOSTEI 0