Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: mapers en 25 Mayo 2015, 21:56



Título: Error Subconsulta Mysql
Publicado por: mapers en 25 Mayo 2015, 21:56
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
  1. 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`
  2. LEFT JOIN `campusvirtual`.`mdl_course` ON `campusvirtual`.`mdl_course_categories`.`id` = `campusvirtual`.`mdl_course`.`category`)
  3.  
  4.  


Título: Re: Error Subconsulta Mysql
Publicado por: Maik33 en 25 Mayo 2015, 22:06
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
  1. 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`
  2. LEFT JOIN `campusvirtual`.`mdl_course` ON `campusvirtual`.`mdl_course_categories`.`id` = `campusvirtual`.`mdl_course`.`category`)
  3.  
  4.  


Título: Re: Error Subconsulta Mysql
Publicado por: mapers en 25 Mayo 2015, 22:12
Si salio pero me podrias decir que le agregaste por favor


Título: Re: Error Subconsulta Mysql
Publicado por: seba123neo en 26 Mayo 2015, 07:35
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.