Error Subconsulta Mysql

Iniciado por mapers, 25 Mayo 2015, 21:56 PM

0 Miembros y 1 Visitante están viendo este tema.

mapers

Buenas señores del foro neceito se su ayuda lo que pasa es que necesito hacer una subconsulta de una base de datos pero me tira el siguiente error :

Error Code : 1242
Subquery returns more than 1 row

l consulta es la siguieten :

Código (sql) [Seleccionar]

SELECT `mdl_course_categories`.`name` FROM `campusvirtual`.`mdl_course_categories` WHERE `mdl_course_categories`.`parent` =(SELECT `campusvirtual`.`mdl_course_categories`.`parent` FROM `campusvirtual`.`mdl_course_categories`
LEFT JOIN `campusvirtual`.`mdl_course` ON `campusvirtual`.`mdl_course_categories`.`id` = `campusvirtual`.`mdl_course`.`category`)


Maik33

Creo que es porque la subconsulta devuelve mas de una fila y tu utilizas la comparación "=".

O cambias la subconsulta para que devuelva un único elemento o en vez de poner "=" pones "IN":

Código (sql) [Seleccionar]

SELECT `mdl_course_categories`.`name` FROM `campusvirtual`.`mdl_course_categories` WHERE `mdl_course_categories`.`parent` IN (SELECT `campusvirtual`.`mdl_course_categories`.`parent` FROM `campusvirtual`.`mdl_course_categories`
LEFT JOIN `campusvirtual`.`mdl_course` ON `campusvirtual`.`mdl_course_categories`.`id` = `campusvirtual`.`mdl_course`.`category`)


mapers

Si salio pero me podrias decir que le agregaste por favor

seba123neo

para explicarlo simple, al usar el "=" obligas a que del otro lado solo haya un valor para que la condicion se cumpla, (y salta error si la subconsulta devuelve mas de un resultado).

por ejemplo una comparacion basica seria "1 = 2"...

pero como te devolvia varios resultados, no se puede hacer "1 = 1...2...3..etc"

en cambio al usar el "IN" este admite qeu devuelva varios resultados y solo se cumple la condicion si el lado izquierdo coincide con alguno de los valores que esten en el lado derecho.

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson