Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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
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é..
Anderson, de qualuqer forma é bem vindo
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.
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 |
SELECT U.NOME_USUARIO, N.DATA, N.NOTICIA
FROM NOTICIAS N
JOIN USUARIOS U ON N.ID_USUARIO = U.ID
ORDER BY N.DATA DESC
LIMIT 3
Anderson se almentar o limit vai ter o seguinte resultado
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
Dúvida recorrente, devem ter outras soluções além das passadas.
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..
Utilizei
SELECT 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 6
Resultado
Rogerio noticia4 2013-01-15
João noticia3 2012-12-30
Pedro noticia2 2012-12-25
Maria noticia1 2012-11-01
Onde o Resultado correto seria
João noticia10 2013-02-06
Maria noticia9 2013-02-03
Rogerio noticia8 2013-01-30
Pedro noticia7 2013-01-23
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. =)
Marcelo muito obrigado funcionou perfeitamente.
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
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..