Jag gjorde en rolig variant där jag la upp en extern tabell med de genre man vill visa:
Kod:
delimiter $$
CREATE TABLE `genreparam` (
`idgenreparam` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`idgenreparam`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$
Och så moddade jag SPn lite genom att lägga till ytterligare två subquerys för att hämta parametervärdena. La upp värdena 10 och 11 i parametertabellen, då returneras två rader från databasen, film 159 och 206. Exekveringstiden blir 16 ms varje gång jag kör.
Kod:
delimiter $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `getMoviesShowAllGenres2`()
BEGIN
SELECT q1.id, q1.date, group_concat(genres.name) genre_field FROM
(
SELECT m.id, m.date FROM movies m JOIN movie_genres mg ON mg.movie_id = m.id AND mg.genre_id IN (select idgenreparam from genreparam) GROUP BY m.id HAVING COUNT(DISTINCT mg.genre_id) = (select count(*) from genreparam)
) q1
JOIN movie_genres mg on mg.movie_id = q1.id
JOIN genres ON mg.genre_id = genres.id
GROUP BY q1.id
ORDER BY q1.date ASC ;
END$$