Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/10/2006, 18:45
latin.developer
 
Fecha de Ingreso: mayo-2005
Mensajes: 55
Antigüedad: 19 años
Puntos: 1
No logro hacer un buscador...

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.