Dúvida SQL - Distinct

Carlos Moreira

Power Member
Viva.

tenho as seguntes tabelas:

TblOpiniao: IDopiniao, intIDOautor, txtOTitulo

tblUsers: IDuser, txtFoto

onde intIDOautor = IDuser



Como faço a query, para ele devolver a ultima opiniao de cada um dos autores?
Pensei que fosse com o Distinct, mas n está funcionar...

A ideia era dps fazer:

(foto user1) - opiniao
(foto user2) - opiniao
(foto user3) - opiniao
(foto user4) - opiniao
(foto user5) - opiniao


Obrigado pela ajuda.
 
O Distinct é normalmente usado com funções agregadoras (como o sum, count, etc) e serve apenas para ele te contar túpulos repetidos apenas como 1.
Portanto não serve para o que queres.
De qualquer maneira, para fazeres o que queres, convinha teres mais um campo que te permitisse ordenar os comentários, e depois ordenavas por ordem decrescente e seleccionavas o primeiro (que equivalia ao comentário mais recente).
 
Uma boa opção é sempre usar o group by. Embora o principio da função seja para aglomerados de dados (sums, averages, etc), a verdade é que uma coisa tão simples como :

select campo from tabela
group by campo

é uma maneira de fazeres um distinct. Não és obrigado a usar funções agregadores só porque usas o group by. De qualquer maneira e para este caso nem sequer necessitas disso, a query que o Delta colocou serve perfeitamente para o efeito.
 
Por alguma razão essa query não estava a funcionar... dava erro nas agregações. Tlx por ser uma base dados Access :( Não sei já tinha mencionado isso....

Mas entretanto já resolvi com a query:

SELECT IDopiniao, txtOTitulo, intIDOautor, IDuser, txtFoto
FROM tblOpiniao, tblUsers
WHERE intIDOautor = IDUser AND IDopiniao IN ( SELECT MAX( IDopiniao ) FROM tblOpiniao GROUP BY intIDOautor)

Obrigado aos que responderam.

Thks
 
Back
Topo