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 :
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`)
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":
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`)
Si salio pero me podrias decir que le agregaste por favor
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.