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

Ajuda SQL Access

Discussão em 'Programação' iniciada por AkumaOwn, 11 de Maio de 2012. (Respostas: 5; Visualizações: 820)

  1. AkumaOwn

    AkumaOwn Power Member

    Estou com uns problemas a conseguir fazer uma query...

    O objectivo é que a query me forneça o quarto preferido ou seja o quarto que tem mais reservas de cada hotel.
    Em baixo está a tabela:
    [​IMG]

    a coluna numeroReserva significa o numero da reserva e não os números de reservas para determinado quarto e hotel.
    a coluna numeroQuarto é simplesmente o numero do quarto, cada hotel tem dois quartos o 1 e o 2.

    Será que alguém me poderia ajudar?
     
  2. maxperformance

    maxperformance Power Member

    SELECT idHotel FRoM tabela ORDER BY numeroReserva DESC
     
  3. AkumaOwn

    AkumaOwn Power Member

    ??
    o que eu quero é o quarto preferido de cada hotel... por exemplo
    no Hotel Sheraton o quarto preferido é o 1 porque tem três reservas enquanto que o 2 só tem uma. Essa query que disseste é simplesmente para ordenar os hotéis por ordem decrescente :S
     
  4. renafi

    renafi Power Member

    select idHotel, numero_quarto,max(count(numeroReserva)) from tabela
    group by idhotel,numero_quarto

    ve se dá.... não testei, mas parece-me isto que queres.
     
  5. AkumaOwn

    AkumaOwn Power Member

    no access não se pode usar max(count( :(
     
  6. fmf1966

    fmf1966 Power Member

    É para usar em Access?!

    Usando puro sql será complicado, mas usando um pouco o vba já se chega lá rapidamente.

    O sql do Access permite utilizar as funções criadas em vba.

    Então seria assim:
    Função VBA:
    Código:
    Public Function QuartoMaisReservado(idHotel)
        Dim rst As Recordset
        Set rst = CurrentDb.OpenRecordset( _
            "SELECT numeroQuarto,COUNT(*) FROM Reservas WHERE idHotel='" _
            & idHotel & "' GROUP BY numeroQuarto ORDER BY 2 DESC")
        If Not rst.EOF Then QuartoMaisReservado = rst(0)
    End Function
    SQL Query :
    Código:
     SELECT idHotel, QuartoMaisReservado(idHotel) FROM Reservas GROUP BY idHotel
     

Partilhar esta Página