Fórum Multiplas Junções #466886

14/01/2014

0

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??
Andre Teixeira

Andre Teixeira

Responder

Posts

14/01/2014

Leandro Chiodini

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
Responder

Gostei + 0

14/01/2014

William

Colega André, como o Leandro já mencionou acima, por gentileza poste as estruturas das tabelas envolvidas e os respectivos campos que tem relacionamento!
Responder

Gostei + 0

15/01/2014

Andre Teixeira

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:

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??
Responder

Gostei + 0

15/01/2014

William

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
Responder

Gostei + 0

17/01/2014

Andre Teixeira

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.

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
Responder

Gostei + 0

17/01/2014

William

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 ...
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar