Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/12/2009, 21:09
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 6 meses
Puntos: 2237
Respuesta: Ayuda para Buscador

Si no quieres sobrecargar el servidor de base de datos, creo que definitivamente sera necesario rediseñar tus tablas (y la programacion).

Por ejemplo, en fondos, no es necesario que tengas el nombre o descripcion de categoria o subcategoria, es preferible solo la ID (el resto de info lo obtendrias mediante JOIN) y no requieres dos tablas para categoria y subcategoria, basta con una sola, donde si el padre es 0, entonces se trata de una categoria y si es mayor que cero se trata de una subcategoria.

De esta forma, harias una consulta a 1 sola tabla de categorias, obteniendo la ID de las que coincidan con los terminos de busqueda y despues buscar en fondos con dos condiciones:

categoria IN (lista de categorias) OR nombre LIKE '%terminos de busqueda%'

Podrias almacenar los resultados en una matriz, ordenandolos por nombre de fondo o por categoria / subcategoria y despues recorrer esa matriz para presentar los resultados en el orden que prefieras.

Ejemplo de tablas:
Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `fondos` (
  2.   `id` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `nombre` VARCHAR(256) DEFAULT NULL,
  4.   `nombre_corto` VARCHAR(256) DEFAULT NULL,
  5.   `fecha` VARCHAR(100) DEFAULT NULL,
  6.   `categoria` INT(11) DEFAULT NULL,
  7.   `visible` INT(11) DEFAULT '1',
  8.   `visitas` INT(11) DEFAULT '1',
  9.   `descargas` INT(11) DEFAULT '1',
  10.   `autor` INT(11) DEFAULT NULL,
  11.   `resolucion` VARCHAR(256) DEFAULT NULL,
  12.   `remitente` INT(11) DEFAULT NULL,
  13.   PRIMARY KEY (`id`)
  14. );
  15.  
  16. CREATE TABLE IF NOT EXISTS `categorias` (
  17.   `id` INT(11) NOT NULL AUTO_INCREMENT,
  18.   `nombre` VARCHAR(256) DEFAULT NULL,
  19.   `nombre_corto` VARCHAR(256) DEFAULT NULL,
  20.   `padre` INT(11) DEFAULT 0,
  21.   `icono` VARCHAR(100) DEFAULT NULL,
  22.   `meta_title` VARCHAR(256) DEFAULT NULL,
  23.   `meta_keywords` VARCHAR(256) DEFAULT NULL,
  24.   `meta_description` VARCHAR(256) DEFAULT NULL,
  25.   PRIMARY KEY (`id`)
  26. );
__________________
- León, Guanajuato
- GV-Foto