Ir para conteúdo

POWERED BY:

Arquivado

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

roots_raiz

[Resolvido] Busca 2 tabelas relacionadas

Recommended Posts

Boa tarde pessoal,

 

 

Tenho um sistema de busca aqui, onde criei um SELECT para buscar em duas tabelas, elas estão relacionadas pelo código, ai está o problema

quando o usuário digita o que quer buscar vem como string, queria fazer apenas um SELECT.

 

ESTRUTURA TABELAS:

 

CLIENTES CATEGORIAS

 

(INT-PK) (INT-FK)

codigo <--- cod_cliente

 

 


//BSC contém o que foi digitado pelo usuário, e é passado por GET.

$sql_bsc = "SELECT cl.*, ca.* 
           FROM clientes as cl, categorias as ca
	WHERE cl.nome = '%$_GET[bSC]%' OR
              ca.nome = '%$_GET[bSC]%'";

$rs_bsc = mysql_query($sql_bsc) or die(mysql_error());
$num_bsc = mysql_num_rows($rs_bsc);	

echo $num;


// imprime 0



Compartilhar este post


Link para o post
Compartilhar em outros sites

roots_raiz, o que você quer é pegar os dados das tabelas conforme um texto digitado pelo usuário? Tipo suas Tabelas são relacionadas pelo campo codigo e cod_cliente onde o primeiro é da Tabela clientes e o segundo da Tabela categorias. Então o seu SQL deveria ser mais ou menos assim:

$sql_bsc = "SELECT * 
           FROM clientes as cl
                    INNER JOIN categorias as ca ON (cl.codigo = ca.cod_cliente)
           WHERE cl.nome LIKE '%$_GET[bSC]%' OR
                 ca.nome LIKE '%$_GET[bSC]%'";

$rs_bsc = mysql_query($sql_bsc) or die(mysql_error());
$num_bsc = mysql_num_rows($rs_bsc);     

echo $num;

O que acontece faço um INNER JOIN para demonstrar qual é o relacionamento entre as duas Tabelas e ao invés de utilizar o = no WHERE deve ser utilizado o LIKE, pois assim irá trazer o texto que estiver em qualquer posição do seu campo nome.

Veja ai e me fale.

Compartilhar este post


Link para o post
Compartilhar em outros sites

roots_raiz, por nada meu caro precisando estamos ai. Só faz um favor coloque como RESOLVIDO para organizar o fórum.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, só mais uma dúvida na exibição pelo while, será necessário colocar o nome da tabela antes:

 

tipo:

 


$sql_bsc = "SELECT * FROM clientes as cl
           INNER JOIN categorias as ca ON (cl.codigo = ca.cod.cliente) 
		WHERE cl.nome LIKE '%$_GET[bSC]%' OR
		      ca.nome LIKE '%$_GET[bSC]%' ";								  
$rs_bsc = mysql_query($sql_bsc) or die(mysql_error());
$num_bsc = mysql_num_rows($rs_bsc);	


while($dados_bsc = mysql_fetch_assoc($rs_bsc))

{
echo $dados_bsc['nome']."</hr>";

}											  


 

saíria das duas tabelas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

roots_raiz, você tem que mencionar a Tabela também. Faço o seguinte execute o comando dentro do LOOP para verifcar a estrutura:

echo "<pre>";
print_r($dados_bsc);
echo "</pre>";

Daí ele demonstra como os dados estão dentro da variável.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz aqui, mas não apareceu os campos com nomes em comum tipo:

 

codigo e nome, eles deverão ser renomeados?

 

mudei os nomes que estavam iguais deu certo!

 

vlw...

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz aqui, mas não apareceu os campos com nomes em comum tipo:

 

codigo e nome, eles deverão ser renomeados?

 

mudei os nomes que estavam iguais deu certo!

 

vlw...

Desculpe é pq tava testanto aqui e era isso mesmo campos com o mesmo nome devem ser renomeados. Que bom que foi conseguiu.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

na tabela CATEGORIAS possui o id do cliente???

o certo é o cliente pertencer a uma categoria

e o id da tabela CATEGORIA que deveria estar na tabela CLIENTES

considerando o relacionamento de 1 para n (categoria e cliente).

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.