Barbyzita 0 Denunciar post Postado Janeiro 22, 2010 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
Dee 0 Denunciar post Postado Janeiro 22, 2010 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
Barbyzita 0 Denunciar post Postado Janeiro 22, 2010 É 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
Dee 0 Denunciar post Postado Janeiro 22, 2010 você já tentou juntar esses 3 Selects em um Só ? Compartilhar este post Link para o post Compartilhar em outros sites
Barbyzita 0 Denunciar post Postado Janeiro 22, 2010 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
Barbyzita 0 Denunciar post Postado Janeiro 22, 2010 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
Dee 0 Denunciar post Postado Janeiro 22, 2010 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
Barbyzita 0 Denunciar post Postado Janeiro 22, 2010 Mas uilizando o ORDER BY dt_trade DESC n irá trazer apenas as datas de cada tabela? Testei com o UNION e n retornou nenhum valor. Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 22, 2010 Entao, usando o Union nao vai dar certo. Tente usar o Inner Join. Compartilhar este post Link para o post Compartilhar em outros sites
Barbyzita 0 Denunciar post Postado Janeiro 22, 2010 De fato, o UNION é a solução! Já testei. Depois postarei aqui a resolução. Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
Barbyzita 0 Denunciar post Postado Janeiro 22, 2010 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
Dee 0 Denunciar post Postado Janeiro 22, 2010 Kii bom! =) Parabéns!! Compartilhar este post Link para o post Compartilhar em outros sites
Barbyzita 0 Denunciar post Postado Janeiro 22, 2010 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
Dee 0 Denunciar post Postado Janeiro 22, 2010 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
Barbyzita 0 Denunciar post Postado Janeiro 22, 2010 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
Dee 0 Denunciar post Postado Janeiro 22, 2010 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
Barbyzita 0 Denunciar post Postado Janeiro 22, 2010 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