Ir para conteúdo

POWERED BY:

Arquivado

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

Piaui

Problemas com filtro WHERE

Recommended Posts

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

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

 

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

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

×

Informação importante

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