Die größten Werte einer Abfrage filtern

Soapp

Erfahrenes Mitglied
Das Ergebnis meiner Abfrage sieht so aus
Wie krieg ich es nun gebacken, dass nur die Zeilen mit den Werten die am höchsten sind angezeigt werden ?
In diesem Fall die ersten 2 Datensätze, es könnten aber auch 5 Datensätze mit dem Wert 2 da sein, oder 6 Werte mit dem Wert 3 etc.....
Versteht ihr was ich meine ?
Danke


count(*)------yr
2------------1996
2 -----------1998
1 -----------2000
1 -----------1981
1 -----------1994


Query:

select count(*), m.yr from movie as m
join casting as c on (c.movieid=m.id)
join actor as a on (a.id=c.actorid)
where a.name='John Travolta'
GROUP BY m.yr
order by count(*) desc
 
etwa so könnte es gehen..
SQL:
SELECT
	s.yr
FROM
	(
		SELECT 
			count(*) AS c, 
			m.yr	
		FROM
			movie AS m
			JOIN casting AS c ON (c.movieid=m.id)
			JOIN actor AS a ON (a.id=c.actorid)
		WHERE 
			a.name='John Travolta'
		GROUP BY 
			m.yr
	) AS s1
WHERE
	s.c = (
			SELECT 
				MAX(c)
			FROM
				(
					SELECT DISTINCT
						count(*) AS c, 
					FROM
						movie AS m
						JOIN casting AS c ON (c.movieid=m.id)
						JOIN actor AS a ON (a.id=c.actorid)
					WHERE 
						a.name='John Travolta'
					GROUP BY 
						m.yr
				) AS cnt
		)

Ansonsten schau mal hier
http://dev.mysql.com/doc/refman/5.1/de/example-maximum-column-group-row.html
 
Zuletzt bearbeitet von einem Moderator:
Ich bin nicht ganz sicher ob die Syntax für Mysql stimmt, aber so gehts.

SQL:
SELECT COUNT(*) as mc, m.yr
FROM
   movie as m
   JOIN casting as c on (c.movieid = m.id)
   JOIN actor as a on (aid = c.actorid)
WHERE a.name = 'John Travolta'
GROUP BY m.yr
HAVING mc >= ALL(
   SELECT COUNT(*) as mc, m.yr
      FROM
         movie as m
         JOIN casting as c on (c.movieid = m.id)
         JOIN actor as a on (aid = c.actorid)
      WHERE a.name = 'John Travolta' GROUP BY m.yr
   )
 
Zuletzt bearbeitet von einem Moderator:
Zurück