1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Dúvida SQL - Distinct

Discussão em 'Programação' iniciada por Carlos Moreira, 22 de Novembro de 2005. (Respostas: 4; Visualizações: 1891)

  1. Carlos Moreira

    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.
     
  2. xtr3me

    xtr3me Power Member

    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).
     
  3. Delta

    Delta Suspenso

    experimenta isto :

    SELECT a.*
    FROM TblOpiniao a, tblUsers b
    WHERE a.intIDOautor = b.IDuser and
    a.IDopiniao = max(a.IDopiniao)
     
  4. jjoao

    jjoao Power Member

    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.
     
  5. Carlos Moreira

    Carlos Moreira Power Member

    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
     

Partilhar esta Página