Vinnaren i pepparkakshustävlingen!
2006-03-15, 21:37
  #1
Medlem
Jag har total-fastnat på en uppgift i SQL som ställer frågor till våran databas.
Allting ska göras i Access.

"Vilken person har varit sessionsordförande flest gånger?"

De klasserna och attributen från databasen som behöver användas är:
Person|person-nr,namn,callee-id
Session|Lokal,session-id,konf-id,ordförande(främmande nyckel från callee-id)

Här är mitt försök:

SELECT namn,antal
FROM person,(SELECT ordförande as newKey, MAX(antal)
FROM (SELECT ordförande, COUNT(ordförande) as antal
FROM session
GROUP BY newKey))
WHERE person.[callee-id]=newKey;

Jag har försökt fram och tillbaka en hel del, all hjälp uppskattas...
Citera
2006-03-17, 07:26
  #2
Medlem
botmunds avatar
Okej, jag fattar inte riktigt din tabell struktur men detta är ett tips:
select top 1 namn, antal from (select namn, count(1) as amount from tabellen group by namn order by count(1) desc)

Alltså ta fram en mängd sorterad enligt antal ggr de förekommer i en tabell. Från denna mängd välj ut den översta raden(högsta antalet).

Förstod du?

Denna (top 1) är Access specific tror jag, använde du t.ex. Oracle skulle man använda rownum attributet.

Jag skall ta fram ett till alternativ åt dig. Måste jobba lite nu...
Citera
2006-03-17, 11:05
  #3
Medlem
botmunds avatar
Den här då?
Här använder man "temporära tabeller" temp, temp2 och joinar deras antal.

Kod:
select 
	namn, 
	antal
from 
	(select namn, count(1) as antal from tabell group by namn) temp,
	(select max(antal) as quant from (select antal, count(1) as antal from tabell group by namn)) temp2
where
	temp.amount = temp2.quant
Citera
2006-03-17, 15:28
  #4
Medlem
SELECT TOP 1
Person.namn,
Count(Session.[session-id]) AS [CountOfsession-id]
FROM
Person
INNER JOIN [Session] ON Person.[calle-id] = Session.ordförande
GROUP BY Person.namn
ORDER BY Count(Session.[session-id]) DESC;
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