junaooaks 3 Denunciar post Postado Setembro 23, 2009 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
William Bruno 1501 Denunciar post Postado Setembro 23, 2009 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
junaooaks 3 Denunciar post Postado Setembro 23, 2009 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
Eclesiastes 2 Denunciar post Postado Setembro 23, 2009 Não são plicas ('), tem que ser backticks (`). Compartilhar este post Link para o post Compartilhar em outros sites
junaooaks 3 Denunciar post Postado Setembro 23, 2009 nao deu certo Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Setembro 23, 2009 Por favor, poste a mensagem de erro. Compartilhar este post Link para o post Compartilhar em outros sites
junaooaks 3 Denunciar post Postado Setembro 23, 2009 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
Eclesiastes 2 Denunciar post Postado Setembro 23, 2009 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
junaooaks 3 Denunciar post Postado Setembro 23, 2009 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
William Bruno 1501 Denunciar post Postado Setembro 23, 2009 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
Eclesiastes 2 Denunciar post Postado Setembro 23, 2009 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
junaooaks 3 Denunciar post Postado Setembro 24, 2009 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
junaooaks 3 Denunciar post Postado Setembro 24, 2009 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
Eclesiastes 2 Denunciar post Postado Setembro 24, 2009 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
junaooaks 3 Denunciar post Postado Setembro 24, 2009 apareceu o erro Table 'cli_bb.identificacao' doesn't exist Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Setembro 24, 2009 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
junaooaks 3 Denunciar post Postado Setembro 25, 2009 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
Eclesiastes 2 Denunciar post Postado Setembro 25, 2009 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