Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos,
Tenho três tabelas
Pessoas
Colaboradores
Clientes
Com isso quero fazer uma lista, na qual apareça duas colunas com o nome do cliente e qual o respectivo colaborador que está atendendo o cliente.
Exemplo:
Tentei fazer algo, mas nada saiu.
<?
$clientes = "SELECT * FROM clientes JOIN pessoas, colaborador WHERE clientes.codigo_pessoa=pessoas.codigo AND clientes.codigo_colaborador=colaboradores.codigo";
$query = mysql_query($clientes);
if($query){
$rows = mysql_num_rows($query);
for($count=0; $count<$rows; $count++){
$cliente_codigo = mysql_result($query, $count, codigo);
$cliente_nome = mysql_result($query, $count, nome);
$colaborador_nome = mysql_result($query, $count, codigo_colaborador);
$cliente_nome = mysql_result($query, $count, [??????????]);
echo $cliente_nome." = ".$colaborador_nome;
}
}
?>>
Pelo que eu entendi é isso que voce precisa fazer:
TABELA: Pessoas
CAMPOS: Código_Pessoa | Nome_Pessoa
TABELA: Colaboradores
CAMPOS: Código_Colaborador | Nome_Colaborador
TABELA: Clientes
CAMPOS: Código | Código_Pessoa | Código_Colaborador
select Nome_Colaborador, Nome_Pessoa from Pessoas, Colaboradores, Clientes where Código_Pessoa = Código_Colaborador;
/-> aqui eu seleciono os campos que preciso/
select Nome_Colaborador, Nome_Pessoa
/-> aquia as tabelas no qual estão os dados/
from Pessoas, Colaboradores, Clientes
/-> verifico se a pessoa pertence a qual colaborador/
where Código_Pessoa = Código_Colaborador;
lembrando se o fulano_A é o colaborador da empresa_A os codigos tem que ser iquais nas tres tabelas pois isso é um relacionamento
Losp Luiz, infelizmente não tá assim na tabela.
Está bem centrado na tabela PESSOAS, onde qualquer informação sobre nome está na tabela PESSOAS. Há outras informações, mas para deixa mais limpo e de fácil entendimento só coloquei o CÓDIGO e NOME.
Tabela: PESSOAS
Campos: Cod | Nome
Já a tabela COLABORADORES também tem vários campos, mas pra deixar de fácil entendimento deixei somente o CÓDIGO e o CÓDIGO PESSOAS (que vai buscar a informação sobre o nome, email, telefone, endereço, ...)
Tabela: COLABORADORES
Campos: Cod | Cod_Pessoa (pessoas.cod)
Na tabela CLIENTES também se busca as informações da Pessoa do Cliente, ou seja, vai tanto a tabela COLABORADORES, quanto a tabela CLIENTES vai buscar o campo NOME da tabela PESSOAS.
Tabela: CLIENTES
Campos: Cod | Cod_Pessoa (pessoas.cod) | Cod_Colaborador (colaboradores.cod)
Por esse motivo estou com dúvida, exatamente porque as duas tabelas estão indo buscar a mesma informação, o NOME.
Como posso diferenciar?
Desse modo eu pego o NOME da tabela PESSOAS, onde o CÓDIGO_PESSOA pertencente a tabela CLIENTE é igual ao CÓDIGO da tabela PESSOAS.
<?
$SQL = "SELECT * FROM clientes JOIN pessoas WHERE clientes.cod_pessoa=pessoas.cod";
$QUERY = mysql_query($SQL);
if($QUERY){
$Nome = mysql_result($QUERY, 0, nome);
}
?>
E Desse outro modo eu pego o NOME da tabela PESSOAS, onde o CÓDIGO_PESSOA pertencente a tabela COLABORADORES é igual ao CÓDIGO da tabela PESSOAS.
<?
$SQL = "SELECT * FROM colaboradores JOIN pessoas WHERE colaboradores.cod_pessoa=pessoas.cod";
$QUERY = mysql_query($SQL);
if($QUERY){
$Nome = mysql_result($QUERY, 0, nome);
}
?>
O que eu quero fazer é exatamente pegar o NOME para o CLIENTE e para o COLABORADOR. O código que fiz foi tentando isso, mas ele só pega o primeiro NOME da tabela.
<?
$clientes = "SELECT * FROM clientes JOIN pessoas, colaborador WHERE clientes.codigo_pessoa=pessoas.codigo AND clientes.codigo_colaborador=colaboradores.codigo AND colaboradores.codigo_pessoa.pessoas.codigo";
$query = mysql_query($clientes);
if($query){
$rows = mysql_num_rows($query);
for($count=0; $count<$rows; $count++){
$cliente_codigo = mysql_result($query, $count, codigo);
$cliente_nome = mysql_result($query, $count, nome);
$colaborador_nome = mysql_result($query, $count, codigo_colaborador);
$cliente_nome = mysql_result($query, $count, [??????????]); // nome também? mas esse nome é diferente do nome do cliente
echo $cliente_nome." = ".$colaborador_nome;
}
}
?>
Teria que fazer duas consultas, ou em uma requisição pode ser realizada essa consulta?
Cara do exemplo que fiz pra você na hora do select basta você informar os campos que precisa ou ao deixar todos eles tente armazenar em um array, ou meu caro vá pelo modo mais dificil, p/ em contrar a solucão ...
Bom pelo que entendi o exemplo que passei resolveria, mas o quanto mais informação tu me passa ou me mostrar fica mais facil para que eu ajude ou outra pessoa entenda o q você quer...
Pelo que eu entendi é isso que voce precisa fazer:
TABELA: Pessoas
CAMPOS: Código_Pessoa | Nome_Pessoa
TABELA: Colaboradores
CAMPOS: Código_Colaborador | Nome_Colaborador
TABELA: Clientes
CAMPOS: Código | Código_Pessoa | Código_Colaborador
select Nome_Colaborador, Nome_Pessoa from Pessoas, Colaboradores, Clientes where Código_Pessoa = Código_Colaborador;
/-> aqui eu seleciono os campos que preciso/
select Nome_Colaborador, Nome_Pessoa
/-> aquia as tabelas no qual estão os dados/
from Pessoas, Colaboradores, Clientes
/-> verifico se a pessoa pertence a qual colaborador/
where Código_Pessoa = Código_Colaborador;
lembrando se o fulano_A é o colaborador da empresa_A os codigos tem que ser iquais nas tres tabelas pois isso é um relacionamento