Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

buscar reiteras veces...

Estas en el tema de buscar reiteras veces... en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola... Estoy desarrollando un sistema de busqueda sobre una base de datos y tengo la siguiente duda. En el sistema de busqueda un usuario puede ...
  #1 (permalink)  
Antiguo 23/11/2005, 10:04
 
Fecha de Ingreso: mayo-2004
Mensajes: 159
Antigüedad: 19 años, 10 meses
Puntos: 0
buscar reiteras veces...

Hola...

Estoy desarrollando un sistema de busqueda sobre una base de datos y tengo la siguiente duda.

En el sistema de busqueda un usuario puede generar criterio de busqueda por cada campo de una tabla, ej. por fecha, por nombre, por apellido, por notas, etc.
Si el resultado de esta busqueda no es suficiente para el usuario, este podrá realizar otra busqueda sobre la hecha anteriormente.
Es deicir: una tabla con los campos codigo, nombre, apellido, fecha_nacimiento, fecha_fallecimiento y notas.
En una primera busqueda el usuario quiere todos los records que cumplan con: la fecha de nacimiento < 19-12-1960, y la fecha de fallecimiento > 20-12-2004; obtenido este resultado el usario quiere saber del primer resultado cuales su nombre comienzan con la letra 'T'.

Existe alguna clase que me permita hacer una query a un resultado de una query anterior???
Si no existe... me pudieran ayudar a decidir que hacer? he pensado en crear tablas temporales en la primera busqueda y hacer la segunda busqueda sobre esas, sería esto una buena idea???
Espero sus consejos...
Gracias
  #2 (permalink)  
Antiguo 23/11/2005, 11:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Lo normal es que se repita la consulta SQL pero añadiendo todos los criterios de busqueda que vas definiendo.

Es decir .. si tu a tu script PHP de consulta en un principio le pasases un criterio . .generas un link tipo:

buscar.php?fecha1=19-12-1960

luego si generas otro criterio .. le añades el siguiente:

buscar.php?fecha1=19-12-1960&fecha2=19-12-2000

Y así sucesivamente .. Tendrías que trabajar sólo la lógica para ir componiendo tu sentencia SQL a base de operadores lógicos "AND" u "OR" según existan esas variables (que son tus criterios de busqueda que vas agregando).

También puedes crear tablas temporales y buscar en ellas .. pero ahí estaras con el dilema de siempre: ¿y si entre la busqueda original y primer filtrado .. la BD se modifica? .. Pero, la técnica en su base sería la misma (la del paso de parámetros a tu script y discriminación de estos datos).

Por lo demás .. si hay algo ya hecho al respecto (todo puede ser .. es un problema común lo que plateas) podrías tenerlo en:

http://www.phpclasses.org/browse/class/10.html

Un saludo,
  #3 (permalink)  
Antiguo 23/11/2005, 13:17
 
Fecha de Ingreso: mayo-2004
Mensajes: 159
Antigüedad: 19 años, 10 meses
Puntos: 0
gracias cluster por responder...

tu primera variante, de añadir los criterios en el link... sería interesante, pero la lógica no solo corresonde a los AND y OR, sino también a los paréntesis "()". Pues no es lo mismo: fecha_nac > '02-12-1960' and fecha_fall < '12-12-2004' and nombre like '^T%'... que
(fecha_nac > '02-12-1960' and fecha_fall < '12-12-2004') and (nombre like '^T%')... como ves la complejidad puede ser muy grande, realmente mi estructura de base de datos y tablas es más compleja que nombre, fecha_nac y fech_fall.

Por otra parte, tienes razón, cada vez que se modifique la tabla original, la tabla temporal caducará...

Todo queda en un compromiso, entre lo mejor y lo más bueno :->

Ahora, creo que mi caso es general... ASP lo tiene incluido, poder hacer query en el resultado de otra query... cualquier decisión que tome la compartiré con ustedes.

Gracias
  #4 (permalink)  
Antiguo 23/11/2005, 14:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En tu caso se complicaría la lógica .. pero de alguna manera debes delimitar que se puede hacer por parte del usuario .. Sea unos simples "AND / OR" o algo más complicado. Podrías incluso dejar pasar "SQL" puro como parte de tu consulta si los usuarios son tan avanzados o se les dá tanta libertad de generar ese tipo de informes .. pero lo típico será que entre un rango de posibilidades (por muchas que sean estas) y lo controles generando en el fondo SQL (más o menos complejo).

------------
No conozco ASP .. pero en PHP todo eso depende directamente del SQL soportado por la BD que uses .. Por ejemplo Mysql 4.0 e inferiores no soporta "sub-consultas" (un "SELECT .... WHERE (SELECT .... )") pero Mysql 4.1 creo que si que lo soporta ya y Mysql 5 si seguro. Por lo demás si te conectas con PHP a una MS SQL server .. su SQL aceptado ya lo soporta.

No sé si te referiras a otra "utilidad" del lenguaje (ASP) .. pero a veces se confunde mucho cosas que lo haces con SQL y no tanto con cierto lenguaje.

Un saludo,
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 17:53.