Vinnaren i pepparkakshustävlingen!
2011-03-25, 11:57
  #1
Medlem
Hej,

Jag har problem att räkna ut Maxvärdet av en COUNT.

Satsen jag har ser ut såhär just nu:

SELECT titel, COUNT (*) AS Antal
FROM Film, Visning, Biljett
WHERE Film.FilmID=Visning.Film
AND Visning.visningsID=Biljett.visning AND Biljett.datum BETWEEN #2009-07-01# AND #2009-07-31#
GROUP BY Titel

Det jag vill göra är alltså att endast behålla den som har störst värde.

Databasen ser ut på så sätt att jag ska ta fram vilken film som sålt flest biljetter under juli månad.

Tacksam för svar.
Citera
2011-03-25, 12:43
  #2
Medlem
Nåt sånt här borde funka.
Kod:
SELECT first 1
  f
.titel,
  
COUNT(b.BiljettID) AS AntalBiljetter
FROM
  Biljett b
inner join Visning v on
  v
.VisningID b.Visning
inner join Film f
  f
.FilmID Visning.film
WHERE
  b
.datum BETWEEN #2009-07-01# AND #2009-07-31#
GROUP BY
  f
.titel
sort by
  AntalBiljetter desc 
Alltså; 1. Plocka fram en lista på antal biljetter per film. 2. Sortera så att den film med flest biljetter hamnar först. 3. Hämta endast den första posten.

Det är "first 1" som gör att endast den första posten plockas hem. Syntaxen för detta skiljer sig åt mellan olika databasmotorer så du får kolla upp vad som gäller för den du använder.
__________________
Senast redigerad av Ansaan 2011-03-25 kl. 12:46.
Citera
2011-03-25, 14:24
  #3
Medlem
Jag kunde lösa det på detta sätt:

SELECT TOP 1 Titel, count(biljettID) AS SåldaBiljetter
FROM Film, Visning, Biljett
WHERE Film.FilmID=Visning.Film
AND Visning.visningsID=Biljett.visning AND Biljett.datum BETWEEN #2009-07-01# AND #2009-07-31#
GROUP BY Titel
ORDER BY count(BiljettID) DESC;

Hoppas att det stämmer nu, prövat att uppdatera databasen och just nu verkar det fungera.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback