Visa ett inlägg
Oläst 2013-06-24, 17:34 #32
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
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$$
Conny Westh är inte uppkopplad   Svara med citatSvara med citat