Ir para conteúdo

POWERED BY:

Arquivado

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

raphaell.info

Concatenar campos

Recommended Posts

Olá Pessoal,

Estou com uma duvida tremente e não tenho ideia de por onde começar, sou novato em PHP por isto a complicação.

 

Meu BD possui os seguintes dados:

 

id nome contrato parcela
01 maria 0235 02
01 maria 0235 02
03 joao 2658 03
04 jose 63524 09
04 jose 95862 01

Tenho que passar para uma outra tabela da seguinte forma:

id contrato
01 0235,0235
03 2658
04 63524,95862

 

Não quero a resposta, gostaria de uma ideia de como juntar (concatenar) os contratos separados por “,” no campo contrato da outra tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse outra tabela seria o q? pq salvar varias informações numa coluna gera varios problemas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Raphael, pela lógica relacional de banco de dados, você não pode fazer isso. Seu banco ficaria extremamente fora dos padrões, o que, em algum momento, te trará dor de cabeça.

Dá pra fazer? Sim, tudo é possível.

Mas já que você está começando, é bom aprender do jeito certo.

 

Uma coisa que muitos programadores PHP pecam é em sua relação com BD. A gente tenta fazer do jeito mais fácil, sem analisar os dados,e acaba fazendo merda depois.

 

Tenta ler um pouco sobre as normalização em bancos de dados.

E nunca esqueça: Sua aplicação só é boa quando tem uma base de dados bem montada atrás. Isso torna seu código mais eficiente.

 

http://www.blogdati.com.br/index.php/2010/03/normalizacao-em-banco-de-dados/

http://keeplearningblog.blogspot.com/2010/07/exemplo-pratico-de-normalizacao-de.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

explique melhor o seu problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fazer do seu jeito(errado) da mais trabalho do que fazer do jeito certo.

 

A melhor solução seria a seguinte:

 

Crie uma tabela clientes:

Id Nome

01 Maria

02 João

 

e outra chamada clientes_contratos:

Id Id_Cliente Contrato

01 01 5481

02 01 8457

03 02 9584

04 02 2565

 

 

Na hora de gerar seu relatório, faça a consulta por cliente, não tem segredo.

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em resumo, nao posso imprimir todos os resultados sem agrupa-los por id, por isto tento jogar dentro de um campo (varchar) os contratos ligados aquela id, so necessito do campo id e contrato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguindo o mesmo esquema que eu falei, faça assim:

 

$sql_clientes = mysql_query("select * from clientes");
while($linha = mysql_fetch_array($sql_clientes)) {
    $id_cliente = $linha["Id"];
    $contratos="";
    $sql_contratos = mysql_query("select * from clientes_contratos where Id_Cliente='$id_cliente'");
    while($linha_contratos = mysql_fetch_array($sql_contratos)) {
         $contrato=$linha_contratos["Contrato"];
         $contratos.=$contrato.",";
    }
    echo $contratos."<br>";
}


Segue uma correção:

 

$sql_clientes = mysql_query("select * from clientes");
while($linha = mysql_fetch_array($sql_clientes)) {
    $id_cliente = $linha["Id"];
    $contratos="";
    $sql_contratos = mysql_query("select * from clientes_contratos where Id_Cliente='$id_cliente'");
    while($linha_contratos = mysql_fetch_array($sql_contratos)) {
         $contrato=$linha_contratos["Contrato"];
         $contratos.=$contrato.",";
    }
    echo $id_cliente." - ".$contratos."<br>"; //linha alterada para exibir o id do cliente
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço a todos pela atenção, mesmo com as recorrentes "chamadas" de estou fazendo errado, como disse no inicio sou novato em PHP e recorri ao fórum para obter informações com que sabe mais do que eu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara sinceramente não entendi muito bem o esquema que voce quer fazer mais vou te indicar 3 coisas..

 

1 - inner join - para criar um relacionamento entre tabelas como o exemplo do dsmachado ... tabela cliente chama o campo ID, na tabela ID_CLIENTE é o mesmo numero do ID, sendo assim com esse 'inner join' voce conseguira montar uma query trazendo os retornos das duas tabelas...

 

2 - comando concat() - concatenar dados no banco

 

3 - triggers - criar espelhos, logs etc.. no bd

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.