Piaui 1 Denunciar post Postado Junho 17, 2016 Pessoal é seguinte estou precisando criar uma pesquisa com múltiplos campos só quando tento filtra usando os campos. Sendo que os dados estão em tabelas diferentes. Para isso fiz um JOIN entre elas mas quando tento filtrar pelo campo da tabelas segundarias não funciona, só apenas pela tabela primaria no caso a tabela consumo. ALGUÉM JÁ PASSOU POR ISSO? CODIGO: $uc = $_POST['uc']; $fabricante = $_POST['fabricante']; $query_Busca = "SELECT consumo.uc, clientes.cliente, consumo.mes, medidores.numero_medidor, medidores.data_instalacao, medidores.fabricante, consumo.leitura, consumo.consumo, consumo.irregularidade, clientes.bairro, clientes.cod_setor, clientes.classe, clientes.subclasse, clientes.situacao, clientes.cpf, clientes.endereco FROM ((consumo LEFT JOIN clientes ON clientes.uc=consumo.uc) RIGHT JOIN medidores ON medidores.uc=clientes.uc) WHERE consumo.uc ='$uc' AND medidores.fabricante ='$fabricante' ORDER BY mes DESC "; Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 17, 2016 Não funciona em que sentido? Não traz o resultado esperado ou dá erro de sintaxe? Aparece alguma mensagem de erro? Compartilhar este post Link para o post Compartilhar em outros sites
Piaui 1 Denunciar post Postado Junho 17, 2016 Não funciona em que sentido? Não traz o resultado esperado ou dá erro de sintaxe? Aparece alguma mensagem de erro? Não traz o resultado. DIAGRAMA http://ap.imagensbrasil.org/image/g8stUX Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 17, 2016 Tente fazer o RIGHT JOIN comparando com consumo.uc também e veja se muda algo: $query_Busca = " SELECT consumo.uc, clientes.cliente, consumo.mes, medidores.numero_medidor, medidores.data_instalacao, medidores.fabricante, consumo.leitura, consumo.consumo, consumo.irregularidade, clientes.bairro, clientes.cod_setor, clientes.classe, clientes.subclasse, clientes.situacao, clientes.cpf, clientes.endereco FROM consumo LEFT JOIN clientes ON clientes.uc=consumo.uc RIGHT JOIN medidores ON medidores.uc=consumo.uc WHERE consumo.uc ='$uc' AND medidores.fabricante ='$fabricante' ORDER BY mes DESC "; Compartilhar este post Link para o post Compartilhar em outros sites
Piaui 1 Denunciar post Postado Junho 17, 2016 Tente fazer o RIGHT JOIN comparando com consumo.uc também e veja se muda algo: $query_Busca = " SELECT consumo.uc, clientes.cliente, consumo.mes, medidores.numero_medidor, medidores.data_instalacao, medidores.fabricante, consumo.leitura, consumo.consumo, consumo.irregularidade, clientes.bairro, clientes.cod_setor, clientes.classe, clientes.subclasse, clientes.situacao, clientes.cpf, clientes.endereco FROM consumo LEFT JOIN clientes ON clientes.uc=consumo.uc RIGHT JOIN medidores ON medidores.uc=consumo.uc WHERE consumo.uc ='$uc' AND medidores.fabricante ='$fabricante' ORDER BY mes DESC "; infelizmente não resolveu... Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 17, 2016 Qual é o resultado esperado e qual está retornando? Compartilhar este post Link para o post Compartilhar em outros sites
Piaui 1 Denunciar post Postado Junho 17, 2016 Qual é o resultado esperado e qual está retornando? É seguinte tenho um formulário de pesquisa com vários campo, consumo, fabricante, uc, e outros, quero que quando eu preencher QUALQUER UM dele me retorne a pesquisa relacionada ao campo digitado(s). Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 18, 2016 Acho que então é igual esse: http://forum.imasters.com.br/topic/549847-ajuda-com-filtro-phpmysql/?p=2195121 Compartilhar este post Link para o post Compartilhar em outros sites
Piaui 1 Denunciar post Postado Junho 20, 2016 Ta dando error Column 'uc' in where clause is ambiguous. Quando utilizo o JOIN na tabelas. Quando tira o JOIN deixando em apenas uma tabela funciona normalmente, o que pode da acontecendo? CODIGO <?php require_once('Connections/BHJ.php'); ?> <?php function Search( Array $Fields ){ if( !is_array( $Fields ) ){ throw new OutOfBoundsException( 'Esperavamos um array' ); }else{ $Fields = array_filter( $Fields ); foreach( $Fields as $index => $data ){ $fields[] = sprintf( '`%s`', $index ); $values[] = !is_numeric( $data ) ? sprintf( "'%s'", $data ) : intval( $data ); } for( $i = 0; $i < sizeOf( $fields ); ++$i ){ if( $i %count( $fields ) == 0 ){ $sql[ $i ] = sprintf( '%s = %s', $fields[ $i ], $values[ $i ] ); }else{ $sql[ $i ] = sprintf( 'OR %s = %s', $fields[ $i ], $values[ $i ] ); } } return implode( ' ', $sql ); } } $Data = array( 'campo1' => '---', 'campo2' => '***', 'campo3' => '///', 'campo4' => 'abc' ); mysql_select_db($database_BHJ, $BHJ); $query_busca = sprintf('SELECT * FROM clientes JOIN consumo ON clientes.uc = consumo.uc WHERE %s', search( $_POST ) ); $busca = mysql_query($query_busca, $BHJ) or die(mysql_error()); $row_busca = mysql_fetch_assoc($busca); $totalRows_busca = mysql_num_rows($busca); ?> Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 20, 2016 Acontece que o campo uc existe em mais de uma tabela, então para utilizar ele no WHERE você também precisa especificar de qual tabela você quer, igual você fez no ON: ON clientes.uc = consumo.uc Compartilhar este post Link para o post Compartilhar em outros sites