Saludos amigos del foro.
Primero confieso que tengo poco tiempo en esto de la programación MySQL y tengo un proyecto que iba muy bien, hasta que me pidieron hacer un buscador general. Les explico el problema:
Tengo una BD con 7 tablas y necesito hacer una búsqueda en todas las tablas. Les digo cada tabla:
TABLA PRODUCCION (p)
IDproduccion
titulo
informacion
TABLA INTERPRETE (i)
IDartista
IDproduccion
TABLA ARTISTA (a)
IDartista
Nombre
TABLA PRODUCIDA (pda)
IDproduccion
IDproductor
TABLA PRODUCTOR (pr)
IDproductor
productor
TABLA COMPUESTA (cta)
IDcompositor
IDproduccion
TABLA COMPOSITOR (c)
IDcompositor
Apellido
Nombre
El asunto está en que la BÚSQUEDA debe buscar por:
p.titulo, p.informacion,
a.nombre,
pr.productor,
c.Apellido, c.Nombre
Yo hice el siguiente query y, funciona solo cuando relaciono PRODUCCION con dos tablas más, por ejemplo, PRODUCIDA y PRODUCTOR:
SELECT
p.IDproduccion, p.titulo, p.informacion, p.IDcategoria, p.lugar,
pda.IDproductor, pda.IDproduccion,
pr.IDproductor, pr.productor,
FROM
produccion p, producida pda, productor pr
WHERE
(pr.IDproductor=pda.IDproductor and pda.IDproduccion=p.IDproduccion)
and (p.titulo like '%$p_search_g%' or p.informacion like '%$p_search_g%' or pr.productor like '%$p_search_g%')
ORDER BY
p.IDproduccion asc
Ahora bien, cuando hago lo siguiente, viene el problema, se tarda demasiado y colapso el servidor:
SELECT
p.IDproduccion, p.titulo, p.informacion, p.IDcategoria, p.lugar,
pda.IDproductor, pda.IDproduccion,
pr.IDproductor, pr.productor,
a.IDartista, a.Nombre,
i.IDproduccion
FROM
produccion p, producida pda, productor pr, artista a, interprete i
WHERE
(pr.IDproductor=pda.IDproductor and pda.IDproduccion=p.IDproduccion and a.IDartista=i.IDartista and i.IDproduccion=p.IDproduccion)
and (p.titulo like '%$p_search_g%' or p.informacion like '%$p_search_g%' or pr.productor like '%$p_search_g%' or a.Nombre like '%$p_search_g%')
ORDER BY
p.IDproduccion asc
Estoy claro que debo estar cometiendo una BARBARIDAD en el modo de la búsqueda pero, honestamente, no se que hacer.
Bueno, espero haberles sido claro y espero (con mucha impaciencia) por una solución. Para que esten claros, tengo las siguientes versiones en el servidor:
PHP 4.4.3
MySQL 4.0.25
Muchas gracias.