Ir para conteúdo

POWERED BY:

Arquivado

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

Barbyzita

[Resolvido] Ordenar dados de 3 tabelas por data

Recommended Posts

Olá, colegas!

 

Estou com um problemão e não consigo encontrar informações acerca do assunto. Bom, tenho 3 tabelas, todas com acesso à variável dt_trade, q se encontra numa 4ª tabela: "poptrade_trade".

Já desenvolvi o código para retornar os valores, só que necessito q os mesmos apareçam da data mais recente à mais antiga. Para isso, um DESC da vida resolve. O problema é q são 3 tabelas, a única q une a todas é a poptrade_trade, com os campos id, tipo_trade, dt_trade, cod_usuario, comentario e imagem. Todas as demais tabelas têm id. Pensei em realizar um for com dt_trade = id e imprimir na tela as demais tabelas, seguindo minha atual conexão. Tenham em mente de q fiz conexão à cada tabela em programas diferentes, ou seja, um programa com conexão para a tabela poprade_trade_acao, outro para poptrade_trade_opcao e outro para poptrade_trade_aviso. Joguei tudo em outro programa: _historico_trades.php. Abaixo vcs poderão entender melhor:

 

<?php

@include("config/config.php");
@include("config/conecta.php");

?>

<div class="text_area">
	<div class="title"><h2>Histórico de Trades</h2></div>
</div>
<p>
<table border="0"><tr>
   <td><b>Data</b></td>
   <td><b>Ativo</b></td>
   <td><b>Operação</b></td>
   <td><b>Entrada</b></td>
   <td><b>Objetivo</b></td>
   <td><b>Stop</b></td>
   <td><b>Imagem</b></td>
</tr>

<?

//Tabela: poptrade_trade_acao. Retorna os valores na tabela desenvolvida acima. 
$resultado = mysql_query ("select ptt.id, ptt.tipo_trade, ptt.dt_trade,ptt.comentario, ptt.cod_usuario_destinatario, pta.ativo, pta.operacao, pta.entrada, pta.objetivo, pta.stop, pta.imagem from poptrade_trade ptt inner join poptrade_trade_acao pta on ptt.id =  pta.id where ptt.tipo_trade = 1 and (ptt.cod_usuario_destinatario is null OR ptt.cod_usuario_destinatario = 'cod_usuario_destinatario') order by dt_trade desc");
$linhas = mysql_num_rows($resultado);
	while ($registro = mysql_fetch_array($resultado,MYSQL_ASSOC))
	{
?>

<tr>
      <td><? echo $registro["dt_trade"]; ?>     </td>
      <td><? echo $registro["ativo"]; ?>     </td>
      <td><? echo $registro["operacao"]; ?>     </td>
	  <td><? echo $registro["entrada"]; ?>     </td>
	  <td><? echo $registro["objetivo"]; ?>     </td>
	  <td><? echo $registro["stop"]; ?>     </td>
	  <td><? echo $registro["imagem"]; ?></td>
   </tr>
   <?
}
?>
</table>
<p>
<table border="0"><tr>
   <td><b>Data</b></td>
   <td><b>Código</b></td>
   <td><b>Operação</b></td>
   <td><b>Imagem</b></td></tr>
</tr>

<?
//Tabela: poptrade_trade_operacao. Retorna os valores na tabela desenvolvida acima. 
$resultado = mysql_query ("SELECT ptt.id, ptt.tipo_trade, ptt.dt_trade, ptt.comentario, ptt.cod_usuario_destinatario, ptop.codigo, ptop.operacao, ptop.imagem FROM poptrade_trade ptt INNER JOIN poptrade_trade_opcao ptop on ptt.id = ptop.id WHERE ptt.tipo_trade = 2 and (ptt.cod_usuario_destinatario IS null or ptt.cod_usuario_destinatario = 'cod_usuario_destinatario') ORDER BY dt_trade DESC");
$linhas = mysql_num_rows($resultado);
	while ($registro = mysql_fetch_array($resultado,MYSQL_ASSOC))
	{
?>

<tr>
	  <td><? echo $registro["dt_trade"]; ?>     </td> <!-- Valor "data" retirada da tabela poptrade_trade-->
      <td><? echo $registro["codigo"]; ?>     </td>
      <td><? echo $registro["operacao"]; ?>     </td>
	  <td><? echo $registro["imagem"]; ?></td>
	  </tr>
   </tr>
   <?
}
?>
</table>
<p>
<table border="0"><tr>
   <td><b>Data</b></td>
   <td align="center"><b>link</b></td>   
</tr>

<?
//Tabela: poptrade_trade_aviso. Retorna os valores na tabela desenvolvida acima. 
$resultado = mysql_query ("SELECT ptt.id, ptt.tipo_trade, ptt.dt_trade, ptt.comentario, ptt.cod_usuario_destinatario, ptav.link FROM poptrade_trade ptt INNER JOIN poptrade_trade_aviso ptav on ptt.id = ptav.id WHERE ptt.tipo_trade = 3 and (ptt.cod_usuario_destinatario IS null OR ptt.cod_usuario_destinatario = 'cod_usuario_destinatario') ORDER BY dt_trade DESC");
$linhas = mysql_num_rows($resultado);
	while ($registro = mysql_fetch_array($resultado,MYSQL_ASSOC))
	{
?>

<tr>
	  <td><? echo $registro["dt_trade"]; ?>     </td> <!-- Valor "data" retirada da tabela poptrade_trade-->
      <td><? echo $registro["link"]; ?></td>    
   </tr>
   <?
}
?>
</table>
<p>

Ou seja, os valores serão retirados de cada tabela, seguindo a ordem decrescente das datas de maneira individual. Não quero isso! Quero q as informações sejam imprimidas seguindo apenas a data de cada uma, misturando ações, opções e avisos. Se um aviso foi cadastrado depois de uma ação(a informação seria mais recente q a cadastrada em ação), quero q apareça acima desta última. Sempre seguirei as datas. Não sei se fui clara o suficiente, até eu me confundi com minhas próprias explicações. rs

 

Quem puder me ajudar, ficaria muito grata!

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Somente atualizando para alguém ver meu post... o.O

 

Não é isso woiewe =\

Eu li seu post, mas eu não consegui pensar em como fazer o que você quer. Não entendi muito bem.

Se você postar no Fórum de Banco de Dados, acho que te responderão melhor.

 

Mas enfim, se você quiser exemplificar o que você quer, talvez eu consiga te ajudar e outros também =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

É pq entrarão outros códigos em PHP, por isso postei aqui. Uma coisa é você consultar pelo próprio banco de dados, outra coisa é você estabelecer um programa q retorne os valores numa página. Esta é minha dúvida. Se você ivesse perguntando, explicaria melhor. rsrsrs

Seguinte: na página aparecerão as três tabelas com seus respectivos dados, uma embaixo da outra exemplo:

 

---> Código acima <---

 

Histórico de Trades

 

Data Ativo Operação Entrada Objetivo Stop Imagem

2010-01-18 17:52:59 PETR3 1 30.05 32.00 29.95 frm-1262010808.GIF

2010-01-14 17:30:00 VALE5 2 46.10 47.00 45.00

 

Data Código Operação Imagem

2010-01-14 17:51:59 VALEA40 Trava de calendário frm-1262010808.GIF

 

Data link

2010-01-14 17:52:59 http://www.futurainvestimentos.com.br/geat/

 

OBS.: Uma tabela embaixo da outra. Só q eu quero q apareça na tela todas as informações, seguindo as datas. Ficaria assim:

 

Histórico de Trades

 

Data Ativo Operação Entrada Objetivo Stop Imagem

2010-01-18 17:52:59 PETR3 1 30.05 32.00 29.95 frm-1262010808.GIF

 

Data link

2010-01-14 17:52:59 http://www.futurainvestimentos.com.br/geat/

 

Data Código Operação Imagem

2010-01-14 17:51:59 VALEA40 Trava de calendário frm-1262010808.GIF

 

Data Ativo Operação Entrada Objetivo Stop Imagem

2010-01-14 17:30:00 VALE5 2 46.10 47.00 45.00

 

Nesse último caso as tabelas iriam se "misturar" deacordo com as datas, da mais recente a mais antiga. Atentem para as datas nesse último exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum... para dizer a verdade, n sei se isso é possível... Tenho pesquisado aqui algumas coisas mas... Nada encontro a esse caso específico. :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum... de fato, isso é possível. No entanto, achei a explicação muito simples, ou seja, utilizar apenas o UNION. o.O

Estou mais perdida q cego em tiroteio... rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Union é uma boa idéia.

Um Inner(Left, Right) Join também, usando a chave primária como estrangeira na outra tabela.

Dae você usar o Order By Data Desc, e vai te trazer do jeito que você quer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

MYSQL:

select ptt.id, ptt.tipo_trade, ptt.dt_trade, ptt.comentario, 
pta.ativo as ativo, pta.operacao as operacao, pta.entrada as entrada, pta.objetivo as objetivo, 
pta.stop as stop, pta.imagem as imagem,
'' as codigo, '' as link 
from poptrade_trade ptt 
inner join poptrade_trade_acao pta on pta.id = ptt.id 

union

select ptt.id, ptt.tipo_trade, ptt.dt_trade, ptt.comentario, '' as ativo, pto.operacao as operacao, 
'' as entrada, '' as objetivo, '' as stop, pto.imagem as imagem, '' as codigo, '' as link  
from poptrade_trade ptt
inner join poptrade_trade_opcao pto on pto.id = ptt.id

union

select ptt.id, ptt.tipo_trade, ptt.dt_trade, ptt.comentario, '' as ativo, '' as operacao, '' as entrada,
'' as objetivo, '' as stop, '' as imagem, '' as codigo, ptaa.link as link  from poptrade_trade ptt
inner join poptrade_trade_aviso ptaa on ptaa.id = ptt.id

limit 50

 

Deu tudo certo. Vamos ver se conseguirei colocar isso no PHP... o.O

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só está sem formatação... queria colocar td bonitinho numa tabela...

 

<div class="text_area">
	<div class="title"><h2>Histórico de Trades</h2></div>
</div>
<p>

<table border="0"><tr>
   <td><b>Data</b></td>
   <td><b>Comentário</b></td>
   <td><b>Ativo</b></td>
   <td><b>Operação</b></td>
   <td><b>Entrada</b></td>
   <td><b>Objetivo</b></td>
   <td><b>Stop</b></td>
   <td><b>Imagem</b></td>
   <td><b>Código</b></td>
   <td><b>Link</b></td>
</tr>

<?

$resultado = mysql_query ("select ptt.id, ptt.tipo_trade, ptt.dt_trade, ptt.comentario, pta.ativo as ativo, pta.operacao as operacao, pta.entrada as entrada, pta.objetivo as objetivo, pta.stop as stop, pta.imagem as imagem, '' as codigo, '' as link from poptrade_trade ptt inner join poptrade_trade_acao pta on pta.id = ptt.id union select ptt.id, ptt.tipo_trade, ptt.dt_trade, ptt.comentario, '' as ativo, pto.operacao as operacao, '' as entrada, '' as objetivo, '' as stop, pto.imagem as imagem, '' as codigo, '' as link from poptrade_trade ptt inner join poptrade_trade_opcao pto on pto.id = ptt.id union select ptt.id, ptt.tipo_trade, ptt.dt_trade, ptt.comentario, '' as ativo, '' as operacao, '' as entrada, '' as objetivo, '' as stop, '' as imagem, '' as codigo, ptaa.link as link  from poptrade_trade ptt inner join poptrade_trade_aviso ptaa on ptaa.id = ptt.id order by dt_trade desc");
$linhas = mysql_num_rows($resultado);
	while ($registro = mysql_fetch_array($resultado,MYSQL_ASSOC))
	{
?>

<tr>
      <td><? echo $registro["dt_trade"]; ?>     </td>
	  <td><? echo $registro["comentario"]; ?>     </td>
      <td><? echo $registro["ativo"]; ?>     </td>
      <td><? echo $registro["operacao"]; ?>     </td>
	  <td><? echo $registro["entrada"]; ?>     </td>
	  <td><? echo $registro["objetivo"]; ?>     </td>
	  <td><? echo $registro["stop"]; ?>     </td>
	  <td><? echo $registro["imagem"]; ?></td>
	  <td><? echo $registro["codigo"]; ?></td>
	  <td><? echo $registro["link"]; ?></td>
   </tr>
   <?
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo num select só fica bem mais fácil =)

Parabéns de novo.

 

Vamo andar junto no recreio amanhã ? :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

kkkkkkkkkkkkk

Obrigada!

 

Sim, de fato, você "alumiou" minhas idéias. Agora é só encontrar alguém q me ajude com a tabela, para deixar cada campo com seu respectivo dado. :D Minha tabela aí ficou muito tosca. pode ser em div mesmo... Em qual tópico devo pedir ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

De nada, mesmo achando que eu nao contribuí com nada =/

 

A tabela é assim mesmo.

Mas da pra ficar buntinha com CSS, colocar borda, cores e tals..

Para isso tem o Fórum de WebStandards:

http://forum.imasters.com.br/index.php?/forum/79-webstandards-css-xml-xhtml-html-patrocinio-treinaweb/

 

Para deixar cada campo com seu respectivo dado é no de Banco de Dados:

http://forum.imasters.com.br/index.php?/forum/103-gerenciamento-de-banco-de-dados/

Compartilhar este post


Link para o post
Compartilhar em outros sites

você é humilde. Se n fosse graças a sua idéia do UNION, teria "matado" meu cérebro com infindáveis if, for, $contador e etc. Minha lógica era toalmente outra! Pense num código maluco e toalmente desnecessário?? Pois bem, era oq eu estava pensando. Ia dar certo, mas com uso de pelo menos mais 10 linhas. o.O

Obrigada pela dica do CSS, é q n sei mexer muito bem nisso aí. rsrsrs Mas darei uma estudada hj e ajeitar meu código. Vou colocar aqui qndo estiver td lindo mesmo.

 

Beijos!

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.