Boca 0 Denunciar post Postado Fevereiro 7, 2013 Pessoal preciso de uma ajuda em Logica de consulta Mysql. Tenho 2 tabelas tb_usuarios | ID | nome_usuario | | 1 | João | | 2 | Rogerio | | 3 | Pedro | | 4 | Maria | tb_noticias | ID | IDUSUARIO | DATA | NOTICIA | | 1 | 4 | 2012-11-01 | NOTICIA1 | | 2 | 3 | 2012-12-25 | NOTICIA2 | | 3 | 1 | 2012-12-30 | NOTICIA3 | | 4 | 2 | 2013-01-15 | NOTICIA4 | | 5 | 1 | 2013-01-16 | NOTICIA5 | | 6 | 4 | 2013-01-16 | NOTICIA6 | | 7 | 3 | 2013-01-29 | NOTICIA7 | | 8 | 2 | 2013-01-30 | NOTICIA8 | | 9 | 4 | 2013-02-03 | NOTICIA9 | | 10| 1 | 2013-02-06 | NOTICIA10 | Estou precisando exibir os 3 ultimos usuários que postaram e mostrar a ultima noticia postada por ele Exemplo neste caso. Resultado | João | NOTICIA10 | 2013-02-06 | | Maria | NOTICIA9 | 2013-02-03 | | Rogreio | NOTICIA8 | 2013-01-30 | Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Marcelo Garbin 30 Denunciar post Postado Fevereiro 7, 2013 Buenas Boca, :joia: Tenta ae algo parecido com isso: SELECT tbl.nome_usuario AS usuario, tb2.noticia AS noticia, tb2.data AS data FROM tb_usuarios AS tb1 INNER JOIN tb_noticias AS tb2 ON tb1.id = tb2.idusuario ORDER BY +data LIMIT 3; Outra coisa, o usuário tem que ser diferente ou apenas mostrar os últimos post? ex.: João postou as 3 últimas notícias ou pegar por exemplo a última notícia do João a última da Maria a última do Rogério? Ve se te ajuda ai.. valeuu.. Compartilhar este post Link para o post Compartilhar em outros sites
Boca 0 Denunciar post Postado Fevereiro 7, 2013 Então exatamente isso Marcelo, preciso mostar somente a ultima noticia e não repetir, igual o exemplo que vc postou. exemplo a última notícia do João a última da Maria a última do Rogério Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Rocha_30596 0 Denunciar post Postado Fevereiro 7, 2013 Cara, pq vc não faz o inverso. Pensando assim, Traga as três últimas noticias e chama o usuário vinculado a essa notícia. Sua consulta principal vai ser na tabela tb_noticias trazendo os campos noticia e data (as três primeiras), e você faz um join na tabela usuário pela chave id_usuario. Se quiser depois posto o código de como ficaria. Até.. Compartilhar este post Link para o post Compartilhar em outros sites
Boca 0 Denunciar post Postado Fevereiro 7, 2013 Anderson, de qualuqer forma é bem vindo Compartilhar este post Link para o post Compartilhar em outros sites
Marcelo Garbin 30 Denunciar post Postado Fevereiro 7, 2013 Hummm... Acredito que nesse caso tem que usar o GROUP BY.Tente usar o mesmo, adaptando no código que lhe enviei.... (estou sem possibilidade de testar o código agora aqui) Verifique se da certo. Compartilhar este post Link para o post Compartilhar em outros sites
Boca 0 Denunciar post Postado Fevereiro 7, 2013 Marcelo, tinha feito o teste com o Group By tbl.ID ai ele me traz tomando como base este exemplo | Rogreio | NOTICIA4 | 2013-01-15 | | João | NOTICIA3 | 2012-12-30 | | Maria | NOTICIA1 | 2012-11-01 | Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Rocha_30596 0 Denunciar post Postado Fevereiro 7, 2013 SELECT U.NOME_USUARIO, N.DATA, N.NOTICIAFROM NOTICIAS NJOIN USUARIOS U ON N.ID_USUARIO = U.IDORDER BY N.DATA DESC LIMIT 3 Compartilhar este post Link para o post Compartilhar em outros sites
Boca 0 Denunciar post Postado Fevereiro 7, 2013 Anderson se almentar o limit vai ter o seguinte resultado nome_usuario data noticia João 2013-02-06 noticia10 Maria 2013-02-03 noticia9 Rogerio 2013-01-30 noticia8 Pedro 2013-01-23 noticia7 Maria 2013-01-20 noticia6 João 2013-01-16 noticia5 Os dois itens em vermelho que é o meu grande problema, esta repetindo o cara Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 7, 2013 http://forum.imasters.com.br/topic/456538-consulta-por-data-mais-recente-tendo-apenas-1-por-dia/#entry1807019 Dúvida recorrente, devem ter outras soluções além das passadas. Compartilhar este post Link para o post Compartilhar em outros sites
Fernando C 128 Denunciar post Postado Fevereiro 8, 2013 Pessoal preciso de uma ajuda em Logica de consulta Mysql. Logica simples; abstraia, de inicio, q vc está trabalhando c/ 2 tabelas: exibir os 3 ultimos usuários que postaram e mostrar a ultima noticia postada por ele select dados from tabela group by pessoa_q_postou order by data_da_postagem desc LIMIT qto vc quiser (no teu caso, 3) adapte ahe.. se n conseguir, retorne.. dica: esta repetindo o cara p/ isso vc usa o group by.. Compartilhar este post Link para o post Compartilhar em outros sites
Boca 0 Denunciar post Postado Fevereiro 8, 2013 UtilizeiSELECT us.nome_usuario AS usuario, not.noticia AS noticia, not.data AS data FROM tb_usuarios AS us INNER JOIN tb_noticias AS not ON us.id = not.idusuario Group By us.id ORDER BY -data LIMIT 6Resultado Rogerio noticia4 2013-01-15João noticia3 2012-12-30Pedro noticia2 2012-12-25Maria noticia1 2012-11-01 Onde o Resultado correto seriaJoão noticia10 2013-02-06Maria noticia9 2013-02-03Rogerio noticia8 2013-01-30Pedro noticia7 2013-01-23 Compartilhar este post Link para o post Compartilhar em outros sites
Marcelo Garbin 30 Denunciar post Postado Fevereiro 8, 2013 Faz uma SubQuery.... Testa ae: SELECT * FROM ( SELECT u.nome_usuario AS usuario, n.noticia AS noticia, n.data AS data FROM tb_usuarios AS u, tb_noticias AS n WHERE u.id=n.idusuario ORDER BY n.data DESC ) as subres GROUP BY subres.usuario ORDER BY -subres.data LIMIT 3; Veja se deu certo e nos retorne. =) Compartilhar este post Link para o post Compartilhar em outros sites
Boca 0 Denunciar post Postado Fevereiro 8, 2013 Marcelo muito obrigado funcionou perfeitamente. Compartilhar este post Link para o post Compartilhar em outros sites
Marcelo Garbin 30 Denunciar post Postado Fevereiro 8, 2013 Valeuu, qualquer coisa prende o grito hehe... Tópico resolvido então. p.s.: se puder podia me dar ponto positivo aii na setinha verde =) valeuuu Compartilhar este post Link para o post Compartilhar em outros sites