Hola tengo que optimizar unas consultas a mysql pues la aplicación se ve sobrecargada y la verdad que no debería tanto pues no hay más de 3000 registros. Esto va a parecer como un ejercicio jeje, a ver si un máquina de vosotros lo puede resolver. Bueno os cuento las tablas que tengo y lo que quiero obtener
animaciones - id_animacion id_plano id_usuario id_estado fecha
maquetaciones - id_maquetacion id_plano id_usuario id_estado fecha
planos - id_plano id_secuencia numero capas
secuencias - id_secuencia id_capitulo numero planos
capitulos - id_capitulo id_proyecto numero nombre
-----------------------------------
Tengo que obtener el número de capitulo con el numero de planos que estos no aparezcan en la tabla maquetaciones y que el id_estado sea 2.
la consulta deberia dar un resultado así:
numero_capitulo número_plano
2 ------------------------ 1534
2 ------------------------ 1536
3 ------------------------ 2543
3 ------------------------ 844
3 ------------------------ 1763
4 ------------------------ 1928
.... etc
Lo que yo he llevado a cabo para conseguir esto de es la siguiente forma pero necesito de varias consultas
Código PHP:
SELECT id_plano
FROM animaciones
WHERE id_plano NOT
IN (
SELECT id_plano
FROM maquetaciones
)
AND id_estado =2
Con esto obtengo todos los planos que no aparecen en la tabla maquetaciones y tienen id_estado=2
Después con un bucle voy recorriendo plano por plano y realizando las siguientes consultas
Código PHP:
select numero
from planos
where id_plano=$id_plano
De esta obtengo el numero del plano
Código PHP:
select numero
from capitulos
where id_capitulo = (select id_capitulos
from secuencias
where id_secuencia = (select id_secuencia
from planos
where id_plano=$id_plano))
De esta otra obtengo el numero del capítulo.
y a continuación voy montando en una tabla la fila con los dos datos obtenidos.
Claro al tener que hacer estas dos consultas por cada id_plano se ralentiza mucho
el sistema. La idea es sacar todo en una sola consulta como mencioné al principio.
Bueno a ver si un experto sabría como puedo hacerlo. Gracias de antemano