none
Select Notícias RRS feed

  • Pergunta

  • Tenho uma tabela de Notícias e preciso fazer um select das três últimas, até aqui consegui

    select distinct top 3  NoticiasID, Titulo, Resumo, Imagem, Instituicao from intra_Noticias
    where Instituicao = 'frsp' order by NoticiasID desc

    porém preciso destas três selecionar somente uma de modo aleatório.

    Tente fazer este select mas da erro.

    select top 1 NoticiasID, Titulo, Resumo, Imagem, Instituicao from intra_Noticias where
    Instituicao IN (
    select distinct top 3  NoticiasID, Titulo, Resumo, Imagem, Instituicao from intra_Noticias
    where Instituicao = 'frsp' order by NoticiasID desc) and Instituicao = 'frsp' order by newid()

    Server: Msg 116, Level 16, State 1, Line 1
    Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

    Muito obrigado.

     

     

    sexta-feira, 6 de outubro de 2006 18:24

Todas as Respostas

  • Olá Fabio,

    Seu SubSelect dentro do IN não pode retornar mais do que uma COLUNA. Mude para ficar da seguinte maneira:

    select top 1 NoticiasID, Titulo, Resumo, Imagem, Instituicao from intra_Noticias where
    Instituicao IN (
    select distinct top 3 Instituicao from intra_Noticias
    where Instituicao = 'frsp' order by NoticiasID desc) and Instituicao = 'frsp' order by newid()

    Se esta foi a resposta para seu Post marque como Respondido

    Att
    Henrique Gurgacz

    sexta-feira, 6 de outubro de 2006 18:31
  • Fabio,

    Quando se utiliza a claúsula In você não pode declarar mais de uma coluna para ser retornada na sua SubQuery.

    Veja o exemplo, sem levar em consideração qualquer regra de negócio ou análise da estrutura do seu banco.

    Select top 1 NoticiasID, Titulo, Resumo, Imagem, Instituicao from intra_Noticias
    Where Instituicao IN (Select Distinct top 3 Instituicao from intra_Noticias
                                         Where Instituicao = 'frsp' order by NoticiasID desc)
    And     Instituicao = 'frsp' order by newid()

    sexta-feira, 6 de outubro de 2006 18:40
  • Veja só, consegui fazer mas ele não esta selecionando os três últimos. Ppq?

    select top 1 NoticiasID, Titulo, Resumo, Imagem, Instituicao from intra_Noticias where
    Instituicao IN (


    select  top 3 Instituicao from intra_Noticias
    where Instituicao = 'frsp' order by NoticiasID desc

    )

    and Instituicao = 'frsp' order by newid()

    As três ultimas notícias tem o id 17, 20, 27

     

    No banco tem 1, 7 , 12, 17,20,27 ele lista um só mas de todos os ids, ou seja o top 3 não funciona, tem idéia do estou errando?

     

     

    sexta-feira, 6 de outubro de 2006 19:15
  • Olá Fabiano,

     Tem algo estranho nesse Select, pois veja, na sua subquery, vc filtra o campo instituição por 'frsp', e depois na query externa faz um in por instituição, ou seja, só trará campos desse valor...

      Dentro do primeiro select  que vc apresentou, a única adição seria:

     

    SELECT * FROM

    (

    select distinct top 3  NoticiasID, Titulo, Resumo, Imagem, Instituicao from intra_Noticias
    where Instituicao = 'frsp' order by NoticiasID desc

    )

    as A

    ORDER BY NEWID()

    obs: em negrito sua query original

     

     

     

    domingo, 22 de outubro de 2006 02:14