Fórum agrupar informações do banco de dados #590959
29/01/2018
0
Boa noite Srs,
Será que podem me ajudar....
preciso que o banco de dados traga para mim as informações(nomes)de todos os clientes de uma tabela
e através desta traga informações de todas as compras feitas por essa pessoa.
no mysql está assim:
exemplo:
tabela1 efetivo:
nome: identidade
paulo 111
joão 222
pedro 333
carlos 444
tabela2 investimento
nome: compras:
paulo maça
joão carne
pedro água
paulo carne
joão carne
joão água
queria que saísse assim
nome: compras:
paulo maça carne
joão carne água (carne aparece so uma vez aqui)
pedro água
carlos (aparece carlos,mas sem nenhuma compra)
o que eu fiz tem saído de um jeito errado
saiu assim
nome: compras:
paulo maça
paulo carne
joão carne
joão água
pedro água
carlos
ou seja, n quero que ele duplique as informações,qria na mesma linha (<td> </td>)
paulo maça carne
e não
paulo maça
paulo carne
se puderem..... ficarei grato...rs
Abraço
Será que podem me ajudar....
preciso que o banco de dados traga para mim as informações(nomes)de todos os clientes de uma tabela
e através desta traga informações de todas as compras feitas por essa pessoa.
no mysql está assim:
exemplo:
tabela1 efetivo:
nome: identidade
paulo 111
joão 222
pedro 333
carlos 444
tabela2 investimento
nome: compras:
paulo maça
joão carne
pedro água
paulo carne
joão carne
joão água
queria que saísse assim
nome: compras:
paulo maça carne
joão carne água (carne aparece so uma vez aqui)
pedro água
carlos (aparece carlos,mas sem nenhuma compra)
o que eu fiz tem saído de um jeito errado
saiu assim
nome: compras:
paulo maça
paulo carne
joão carne
joão água
pedro água
carlos
ou seja, n quero que ele duplique as informações,qria na mesma linha (<td> </td>)
paulo maça carne
e não
paulo maça
paulo carne
se puderem..... ficarei grato...rs
Abraço

Paulo Silva
Curtir tópico
+ 0
Responder
Post mais votado
03/02/2018
Bom dia,
O ideal seria vc mostrar os campos como esta a sua estrutura nas tabelas mas vou lhe da um norte existe uma função no oracle acho que eles esta disponivel tb no MySql é o listagg acho qu no mySql tem o GROUP_CONCAT ficaria mais ou menos assim :
Tente dessa forma:
Acredito que aceite tb assim:
O ideal seria vc mostrar os campos como esta a sua estrutura nas tabelas mas vou lhe da um norte existe uma função no oracle acho que eles esta disponivel tb no MySql é o listagg acho qu no mySql tem o GROUP_CONCAT ficaria mais ou menos assim :
Tente dessa forma:
select a.nome,GROUP_CONCAT(i.compras) compras from afetivo a , incestimento i where a.nome = i.nome group by a.nome
Acredito que aceite tb assim:
select a.nome,LISTAGG(i.compras,',') WITHIN GROUP (ORDER BY NULL) compras from afetivo a , incestimento i where a.nome = i.nome group by a.nome
Douglas Sousa

Responder
Gostei + 1
Mais Posts
03/02/2018
Paulo Silva
boa tarde Douglas,
obgd pelo apoio.
meu projeto esta assim:
qdo eu digito a identidade
ele joga para esta pagina abaixo...
que mostra uma tabela de dias viajado pela pessoa(variaveis =data_inicio e data_final) e oq estava fazendo(se foi a trabalho ou curso ou outros....variavel=realizacao )
uma tabela(efetivo) tem o nome(variavel=nome) e identidade(variavel=identidade) de todas as pessoas
e uma outra tabela(livro) com o nome(variavel=nome) ,identidade(variavel=identidade),o intervalo de tempo que ficou fora(variaveis data_inicio e data_final)ex.:neste formato:20180203 a 20180210 ano mes dia
e o que foi fazer(variavel=realizacao)
mas so consegui fazer com <textarea>
mas com textarea n consigo trocar as variaveis realizações por imagens ou deixa-las coloridas (por exemplo para receber a variavel realizações = a trabalho( ficara vermelho ,para ferias ficara verde).
a baixo a estrutura php
<tr>
<th>identidade<th>
</tr>
<tr>
<?php
$identidade=$_POST['identidade'];
$result = mysql_query("SELECT DISTINCT(identidade) FROM efetivo where status='ATIVO' and identidade='$identidade' order by prio asc limit 0,18");
if (!$result) {
echo 'Não foi possível executar a consulta: ' . mysql_error();
exit;
}
while($row = mysql_fetch_row($result)){ ?>
<tr>
<td >
echo $row[0];
</td>
<body>
<script type="text/javascript" src="js/wz_tooltip.js"></script>
<TD height='6px'>
<?php
$sql = "SELECT * FROM livro WHERE identidade='$row[0]' and data_inicio <= '20180101' and '20180101' <=data_final ";
$res = mysql_query($sql);
while($linha = mysql_fetch_array($res)){ ?>
<textarea style="border: none;width:70%;height:200% ;color: red;font: bold 9px Arial, Helvetica, sans-serif;resize: none; " rows="1" readonly='readonly' onmouseover="Tip('<?php echo $linha['realizacao'];?>')" onmouseout="UnTip()"/><?php } ?><?php $sql = "SELECT * FROM livro WHERE identidade='$row[0]' ";
$res = mysql_query($sql);
while($linha = mysql_fetch_array($res)){ ?><?php IF( $linha['data_inicio'] <= '20180101' && '20180101' <= $linha['data_final'] ){ ?><?php $parte_realizacao = substr($linha['os'], 0, 2); echo $parte_realizacao; ?><?PHP }
ELSE {}; ?><?php } ?></textarea>
</TD>
<TD height='6px'>
<?php
$sql = "SELECT * FROM livro WHERE identidade='$row[0]' and data_inicio <= '20180102' and '20180102' <=data_final ";
$res = mysql_query($sql);
while($linha = mysql_fetch_array($res)){ ?>
<textarea style="border: none;width:70%;height:200% ;color: red;font: bold 9px Arial, Helvetica, sans-serif;resize: none; " rows="1" readonly='readonly' onmouseover="Tip('<?php echo $linha['realizacao'];?>')" onmouseout="UnTip()"/><?php } ?><?php $sql = "SELECT * FROM livro WHERE identidade='$row[0]' ";
$res = mysql_query($sql);
while($linha = mysql_fetch_array($res)){ ?><?php IF( $linha['data_inicio'] <= '20180102' && '20180102' <= $linha['data_final'] ){ ?><?php $parte_realizacao = substr($linha['realizacao'], 0, 2); echo $parte_realizacao; ?><?PHP }
ELSE {}; ?><?php } ?></textarea>
</TD>
<TD height='6px'>
<?php
$sql = "SELECT * FROM livro WHERE identidade='$row[0]' and data_inicio <= '20180103' and '20180103' <=data_final ";
$res = mysql_query($sql);
while($linha = mysql_fetch_array($res)){ ?>
<textarea style="border: none;width:70%;height:200% ;color: red;font: bold 9px Arial, Helvetica, sans-serif;resize: none; " rows="1" readonly='readonly' onmouseover="Tip('<?php echo $linha['realizacao'];?>')" onmouseout="UnTip()"/><?php } ?><?php $sql = "SELECT * FROM livro WHERE identidade='$row[0]' ";
$res = mysql_query($sql);
while($linha = mysql_fetch_array($res)){ ?><?php IF( $linha['data_inicio'] <= '20180103' && '20180103' <= $linha['data_final'] ){ ?><?php $parte_os = substr($linha['os'], 0, 2); echo $parte_realizacao; ?><?PHP }
ELSE {}; ?><?php } ?></textarea>
</TD>
<!-- e por ai vai ate fechar o ano(fiz na mao mesmo!!!rs dia por dia ate fechar o ano) se tiver uma ideia pra tornar mais pratico sem ser desse jeito manual..aceito..rs
<?php
}
?>
</tr>
e eu n qria ter q usar textarea
pq n consigo depois manipular as variaveis que vao ali pra dentro da textarea
pois se aparecer a palavra ferias poderia trocar por uma imagem de uma praia
ou se aparecesse a palavra a trabalho trocaria por uma imagem de uma empresa...
espero ter explicado direito...rs
obgd pelo apoio.
meu projeto esta assim:
qdo eu digito a identidade
ele joga para esta pagina abaixo...
que mostra uma tabela de dias viajado pela pessoa(variaveis =data_inicio e data_final) e oq estava fazendo(se foi a trabalho ou curso ou outros....variavel=realizacao )
uma tabela(efetivo) tem o nome(variavel=nome) e identidade(variavel=identidade) de todas as pessoas
e uma outra tabela(livro) com o nome(variavel=nome) ,identidade(variavel=identidade),o intervalo de tempo que ficou fora(variaveis data_inicio e data_final)ex.:neste formato:20180203 a 20180210 ano mes dia
e o que foi fazer(variavel=realizacao)
mas so consegui fazer com <textarea>
mas com textarea n consigo trocar as variaveis realizações por imagens ou deixa-las coloridas (por exemplo para receber a variavel realizações = a trabalho( ficara vermelho ,para ferias ficara verde).
a baixo a estrutura php
<tr>
<th>identidade<th>
</tr>
<tr>
<?php
$identidade=$_POST['identidade'];
$result = mysql_query("SELECT DISTINCT(identidade) FROM efetivo where status='ATIVO' and identidade='$identidade' order by prio asc limit 0,18");
if (!$result) {
echo 'Não foi possível executar a consulta: ' . mysql_error();
exit;
}
while($row = mysql_fetch_row($result)){ ?>
<tr>
<td >
echo $row[0];
</td>
<body>
<script type="text/javascript" src="js/wz_tooltip.js"></script>
<TD height='6px'>
<?php
$sql = "SELECT * FROM livro WHERE identidade='$row[0]' and data_inicio <= '20180101' and '20180101' <=data_final ";
$res = mysql_query($sql);
while($linha = mysql_fetch_array($res)){ ?>
<textarea style="border: none;width:70%;height:200% ;color: red;font: bold 9px Arial, Helvetica, sans-serif;resize: none; " rows="1" readonly='readonly' onmouseover="Tip('<?php echo $linha['realizacao'];?>')" onmouseout="UnTip()"/><?php } ?><?php $sql = "SELECT * FROM livro WHERE identidade='$row[0]' ";
$res = mysql_query($sql);
while($linha = mysql_fetch_array($res)){ ?><?php IF( $linha['data_inicio'] <= '20180101' && '20180101' <= $linha['data_final'] ){ ?><?php $parte_realizacao = substr($linha['os'], 0, 2); echo $parte_realizacao; ?><?PHP }
ELSE {}; ?><?php } ?></textarea>
</TD>
<TD height='6px'>
<?php
$sql = "SELECT * FROM livro WHERE identidade='$row[0]' and data_inicio <= '20180102' and '20180102' <=data_final ";
$res = mysql_query($sql);
while($linha = mysql_fetch_array($res)){ ?>
<textarea style="border: none;width:70%;height:200% ;color: red;font: bold 9px Arial, Helvetica, sans-serif;resize: none; " rows="1" readonly='readonly' onmouseover="Tip('<?php echo $linha['realizacao'];?>')" onmouseout="UnTip()"/><?php } ?><?php $sql = "SELECT * FROM livro WHERE identidade='$row[0]' ";
$res = mysql_query($sql);
while($linha = mysql_fetch_array($res)){ ?><?php IF( $linha['data_inicio'] <= '20180102' && '20180102' <= $linha['data_final'] ){ ?><?php $parte_realizacao = substr($linha['realizacao'], 0, 2); echo $parte_realizacao; ?><?PHP }
ELSE {}; ?><?php } ?></textarea>
</TD>
<TD height='6px'>
<?php
$sql = "SELECT * FROM livro WHERE identidade='$row[0]' and data_inicio <= '20180103' and '20180103' <=data_final ";
$res = mysql_query($sql);
while($linha = mysql_fetch_array($res)){ ?>
<textarea style="border: none;width:70%;height:200% ;color: red;font: bold 9px Arial, Helvetica, sans-serif;resize: none; " rows="1" readonly='readonly' onmouseover="Tip('<?php echo $linha['realizacao'];?>')" onmouseout="UnTip()"/><?php } ?><?php $sql = "SELECT * FROM livro WHERE identidade='$row[0]' ";
$res = mysql_query($sql);
while($linha = mysql_fetch_array($res)){ ?><?php IF( $linha['data_inicio'] <= '20180103' && '20180103' <= $linha['data_final'] ){ ?><?php $parte_os = substr($linha['os'], 0, 2); echo $parte_realizacao; ?><?PHP }
ELSE {}; ?><?php } ?></textarea>
</TD>
<!-- e por ai vai ate fechar o ano(fiz na mao mesmo!!!rs dia por dia ate fechar o ano) se tiver uma ideia pra tornar mais pratico sem ser desse jeito manual..aceito..rs
<?php
}
?>
</tr>
e eu n qria ter q usar textarea
pq n consigo depois manipular as variaveis que vao ali pra dentro da textarea
pois se aparecer a palavra ferias poderia trocar por uma imagem de uma praia
ou se aparecesse a palavra a trabalho trocaria por uma imagem de uma empresa...
espero ter explicado direito...rs
Responder
Gostei + 0
03/02/2018
Paulo Silva
DOUGLAS OBRIGD PELA DIREÇÃO<br />
DEU CERTO<br />
DEI UMA ESTUDADA SOBRE GROUP_CONCAT<br />
<br />
MTO GRATO!!!!!
DEU CERTO<br />
DEI UMA ESTUDADA SOBRE GROUP_CONCAT<br />
<br />
MTO GRATO!!!!!
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)