Comparación contra subconsulta MySQL que devuelve varios valores de tipo cadena
Publicado por Optigan (2 intervenciones) el 07/02/2019 23:37:07
Dada una BBDD de grupos musicales, me gustaría saber cómo mostrar todas las bandas que tengan al menos los subestilos de otra en concreto; he intentado algo así:
Pero sólo parece funcionar en caso de que la subconsulta devuelva un solo resultado; en el caso de Eels, que tiene dos subestilos asociados (dos que son bastante habituales, "Alternative Rock" e "Indie Rock", y que comparten varias otros grupos de mi BBDD, por lo que serían esperables resultados), no devuelve nada.
¿Sería necesario programar un cursor? En general, me estoy estrellando contra este tipo de consultas que buscan establecer comparaciones con grupos de resultados (aunque sea simplemente buscar qué bandas comparten el subestilo X y el Y); supongo que es un error de base.
1
2
3
4
5
SELECT nombre_autor
FROM autores NATURAL JOIN publican NATURAL JOIN discos NATURAL JOIN relacionados NATURAL JOIN subestilos
WHERE nombre_subestilo = ALL (SELECT DISTINCT nombre_subestilo
FROM subestilos NATURAL JOIN relacionados NATURAL JOIN discos NATURAL JOIN publican NATURAL JOIN autores
WHERE nombre_autor = 'Eels');
Pero sólo parece funcionar en caso de que la subconsulta devuelva un solo resultado; en el caso de Eels, que tiene dos subestilos asociados (dos que son bastante habituales, "Alternative Rock" e "Indie Rock", y que comparten varias otros grupos de mi BBDD, por lo que serían esperables resultados), no devuelve nada.
¿Sería necesario programar un cursor? En general, me estoy estrellando contra este tipo de consultas que buscan establecer comparaciones con grupos de resultados (aunque sea simplemente buscar qué bandas comparten el subestilo X y el Y); supongo que es un error de base.
Valora esta pregunta
0