Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Anidacion en MySql

Estas en el tema de Anidacion en MySql en el foro de Mysql en Foros del Web. Hola k tal, A la hora de realizar esta "consulsota" Código HTML: SELECT a.id,b.codigo AS p1,c.codigo AS p2,d.codigo AS p3,e.codigo AS p4,f.codigo AS p5,g.codigo AS ...
  #1 (permalink)  
Antiguo 05/01/2009, 17:57
Avatar de msmtotti  
Fecha de Ingreso: noviembre-2008
Mensajes: 47
Antigüedad: 15 años, 5 meses
Puntos: 0
Anidacion en MySql

Hola k tal, A la hora de realizar esta "consulsota"
Código HTML:
SELECT a.id,b.codigo AS p1,c.codigo AS p2,d.codigo AS p3,e.codigo AS p4,f.codigo AS p5,g.codigo AS p6,h.codigo AS p7,i.codigo AS p8,j.respuesta AS p9,k.codigo AS p10,l.codigo AS p11,m.codigo AS p12,n.codigo AS p13,o.codigo AS p14,p.respuesta AS p15,q.codigo AS p16,r.codigo AS p17,s.respuesta AS p18,t.codigo AS p19,v.codigo AS p20, w.codigo AS p21,x.codigo AS p22,y.respuesta AS p23,z.codigo AS p24,aa.codigo AS p25

FROM (  SELECT a.id FROM scripts_cuestionario AS a WHERE a.script_id = '3' ) AS a 

LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =34 )  AS b ON a.id = b.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =35 )  AS c ON a.id = c.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =36 )  AS d ON a.id = d.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =37 )  AS e ON a.id = e.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =38 )  AS f ON a.id = f.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =39 )  AS g ON a.id = g.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =40 )  AS h ON a.id = h.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =41 )  AS i ON a.id = i.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, a.respuesta FROM scripts_respuestatextbox as a where a.pregunta_id = 42 ) AS j ON a.id = j.encuesta_id LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =43 )  AS k ON a.id = k.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =44 )  AS l ON a.id = l.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =45 )  AS m ON a.id = m.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =46 )  AS n ON a.id = n.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =47 )  AS o ON a.id = o.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, a.respuesta FROM scripts_respuestatextbox as a where a.pregunta_id = 48 ) AS p ON a.id = p.encuesta_id LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =49 )  AS q ON a.id = q.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =50 )  AS r ON a.id = r.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, a.respuesta FROM scripts_respuestatextbox as a where a.pregunta_id = 51 ) AS s ON a.id = s.encuesta_id LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =52 )  AS t ON a.id = t.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =53 )  AS v ON a.id = v.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =54 )  AS w ON a.id = w.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =55 )  AS x ON a.id = x.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, a.respuesta FROM scripts_respuestatextbox as a where a.pregunta_id = 56 ) AS y ON a.id = y.encuesta_id LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =57 )  AS z ON a.id = z.encuesta_id 
LEFT JOIN (SELECT a.encuesta_id, b.opcion, b.codigo FROM scripts_respuestadeopcionunica AS a, scripts_respuesta AS b WHERE a.respuesta_id = b.id AND a.pregunta_id =58 )  AS aa ON a.id = aa.encuesta_id
me marca este "error"
Código HTML:
Too high level of nesting for select
Ya se k es por los niveles de anidacion k hay en la consulta, alguien sabe como solucionarlo??
Gracias
  #2 (permalink)  
Antiguo 06/01/2009, 02:44
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Anidacion en MySql

Efectivamente son los niveles de anidación. Creo que en SQL se admiten hasta 16, pero tú usas 22. De todas formas una consulta con tantos niveles debe ser revisada. Dinos cuáles son tus tablas, los campos y relaciones y qué es lo que estás intentando hacer con esa consulta. Es probable que otra consulta distinta haga lo mismo y sin necesidad de anidar tantas subconsultas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:28.