Ir para conteúdo

POWERED BY:

Arquivado

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

Boca

Consulta MySQL

Recommended Posts

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

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

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

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
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

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 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

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

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.