Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

junaooaks

consulta sql em 2 bancos

Recommended Posts

pessoal como faço 1° consulta sql em 2 bancos de dados

 

tenho dois arquivos de conexao com os bancos distintos

 

require ("../../includes/conexao_mysql.php");
require ("../../includes/conexao_mysql_banco.php");

a consulta sera algo +ou- assim

 

SELECT * FROM relacionamento rel, clientes cli, identificacao ide, titulo tit WHERE (depois coloco a condicao)

me da um erro, falando que nao existe as tabela cliente em um dos bancos que fiz a conexao.

 

preciso fazer a conexao com os bancos sem que apareça este erro.

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que você teria que especificar o banco na query:

SELECT `banco`.tabela`.`campo` FROM `banco`.`tabela`

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao ficaria algo assim

 

//puxar a pagina de coneXão para dentro deste script
require ("../../includes/conexao_mysql.php");
require ("../../includes/conexao_mysql_banco.php");


//mostrar todos os clientes ativos, e que estao em prazo de vencimento
$sql = mysql_query("SELECT * FROM 'brsite'.clientes AS cli, 'brsite'.relacionamento AS rel, 'bb'.identificacao AS iden, 'bb'.titulocbr AS tit 
				     WHERE rel.status = '1'
					 AND rel.id_cliente = cli.id ORDER BY NomeCliente ASC") or die (mysql_error());

aparece erro de syntax

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao deu certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

a consulta deu certo.

 

so que agora eu nao to conseguindo criar abelido na tabela

$sql = mysql_query("SELECT * FROM brsite.clientes, brsite.relacionamento, bb.identificacao, bb.titulocbr
		    WHERE status = '1'
		    AND id_cliente = id ORDER BY NomeCliente ASC") or die (mysql_error());

aparece o erro

Column 'id' in where clause is ambiguous 

quando coloco os apelidos nas tabelas "briste.clientes AS cli," NAO funciona a consulta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na parte 'id_cliente = id' do WHERE, coloque o nome da tabela como prefixo para indicar a qual campo ID você está querendo se referir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

parece que deu certo

 

so que esta demorando pra retorna a consulta

 

você sabe se e normal uma consulta em dois bancos demorar retornar a consulta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende da consulta de como estão as tuas tabelas, e da conexão com o banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, se você não diz que está demorando, já passaria desapercebido... Sua query não está 100%, ela está fazendo vários CROSS JOIN.

Isto porque você está usando "FROM brsite.clientes, brsite.relacionamento, bb.identificacao, bb.titulocbr" e não está fazendo as junções de umas com as outras, criando então um resulta enorme o qual totaliza a multiplicação do total de registros de cada uma tabela.

 

Entendeu? Você precisa interligar os dados relacionados de cada uma dessas tabelas, descrevendo isto no seu WHERE ou usando LEFT/INNER/RIGHT JOIN com cláusula ON.

Compartilhar este post


Link para o post
Compartilhar em outros sites

galera realmente to precisando de ajuda pra montar esta consulta

 

preciso montar uma consulta em dois bancos de dados que me retorne na mesma consulta

 

tenho as tabelas cliente AS cli, relacionamento AS rel no banco x e titulocbr AS tit, identificação AS ide no banco y

 

preciso relacionar

o x.cli.id com x.rel.id_cliente

o ( x.cli.Cpf = y.tit.numeroIdentificador or x.cli.Cgc = y.tit.numeroIdentificador)//verificar se a tabela nueroIdentificador esta preenchida com cpf ou cnpj

o (y.tit.codigoEstado='11' OR y.tit.codigoEstado='09')

o y.tit.codigoSacadoFK = y.ide.codigoPessoaFK

 

ja tentei de varias forma to tentando assim agora mas esta dando erro usando INNER JOIN

$sql = mysql_query("SELECT cli.id, cli.NomeCliente, cli.Cpf, cli.Cgc, rel.status, tit.valor  
		    FROM brsite.cliente AS cli INNER JOIN bb.titulocbr AS tit ON (cli.Cpf = tit.numeroIdentificador OR cli.Cgc = tit.numeroIdentificador)
		    bb.identificacao AS ide INNER JOIN tit ON tit.codigoSacadoFK = ide.codigoPessoaFK
		    WHERE rel.status = '1'
		    AND tit.codigoEstado='11' OR tit.codigoEstado='09'
		    AND rel.id_cliente = cli.id ORDER BY NomeCliente ASC") or die (mysql_error());

 

da dando o erro

 

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 'bb.identificacao AS ide INNER JOIN tit ON tit.codigoSacadoFK = ide.codigoPessoaF' at line 3

 

quem pode me ajudar nesta consulta, nunca fiz nada parecido com esta consulta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal fiz uma nova cosulta

eu acho que o meu problema esta em como estou referendo a duas tabela no inner join

$sql = mysql_query("SELECT cli.id, cli.NomeCliente, cli.Cpf, cli.Cgc, rel.status, tit.valor  
		    FROM brsite.clientes cli 
		    INNER JOIN brsite.relacionamento rel ON cli.id = rel.id_cliente
		    INNER JOIN cli_bb.identificacao ide ON cli.Cpf = ide.numeroIdentificador
		    INNER JOIN ide_bb.titulocbr tit ON ide.codigoPessoaFK = tit.codigoSacadoFK
		    WHERE rel.status = '1'
		    AND tit.codigoEstado='11' OR tit.codigoEstado='09' ORDER BY cli.NomeCliente ASC") or die (mysql_error());

o meu problema esta aqui

INNER JOIN cli_bb.identificacao o cli e a tabela cliente no banco brsite que faz junção com a tabela identificacao no banco bb.

 

este e o erro que aparece

 

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 '.identificacao ide ON cliente.Cpf = identificacao.numeroIdentificador INNE' at line 4

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim:

 

SELECT cli.id,
       cli.NomeCliente,
       cli.Cpf,
       cli.Cgc,
       rel.status,
       tit.valor  
  FROM (brsite.clientes cli 
    INNER JOIN brsite.relacionamento rel
      ON cli.id = rel.id_cliente)
    INNER JOIN cli_bb.identificacao ide
      ON cli.Cpf = ide.numeroIdentificador
    INNER JOIN ide_bb.titulocbr tit
      ON ide.codigoPessoaFK = tit.codigoSacadoFK
  WHERE rel.status = '1'
    AND tit.codigoEstado = '11'
    OR tit.codigoEstado = '09'
  ORDER BY cli.NomeCliente ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

apareceu o erro

Table 'cli_bb.identificacao' doesn't exist

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso eu copiei da sua última query, mas em outro post acima você usou 'bb.identificacao' e 'bb.titulobr'. Verifique esses dois na query. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

o meu problema esta em fazer a junção de uma tabela de um banco com outro banco.

 

tem como passar ex.?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu problema atualmente está apenas no nome do bd, pelo que vejo...

 

 

Tente assim:

 

SELECT cli.id,
       cli.NomeCliente,
       cli.Cpf,
       cli.Cgc,
       rel.status,
       tit.valor  
  FROM (brsite.clientes cli 
    INNER JOIN brsite.relacionamento rel
      ON cli.id = rel.id_cliente)
    INNER JOIN bb.identificacao ide
      ON cli.Cpf = ide.numeroIdentificador
    INNER JOIN bb.titulocbr tit
      ON ide.codigoPessoaFK = tit.codigoSacadoFK
  WHERE rel.status = '1'
    AND tit.codigoEstado = '11'
    OR tit.codigoEstado = '09'
  ORDER BY cli.NomeCliente ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.