Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Consultas a la Base de DAtos

Estas en el tema de Consultas a la Base de DAtos en el foro de Bases de Datos General en Foros del Web. Gente, Quizás la pregunta es muy simple, pero sinceramente necesito solucionarla pronto, y ya no tengo cabeza Yo tengo una base de datos con un ...
  #1 (permalink)  
Antiguo 21/05/2004, 10:59
gcs
 
Fecha de Ingreso: enero-2004
Ubicación: Heredia, Costa Rica
Mensajes: 191
Antigüedad: 20 años, 3 meses
Puntos: 0
Consultas a la Base de DAtos

Gente,

Quizás la pregunta es muy simple, pero sinceramente necesito solucionarla pronto, y ya no tengo cabeza

Yo tengo una base de datos con un poco de columnas y quiero hacer una consulta por etapas, como es esto ? bueno....

En la base de datos quiero consultar primero que extraiga todos aquiellos valores que en el campo GERENCIA sea igual a 1, posterior a esa selección, quier seguir depurandola de tal forma que de esa selección rescatar todos aquellos que tengan en el campo de FECHA = $mesactual y Fecha que tenga en el campo 'mensual'.

Les comento, es que estamos haciendo una valoración de informes pero esos informes unos van para gerencia y otros para todo el edificio, pero algunos de ellos se emiten mensualmente y otro se emiten en cierta fecha y quiero hacer un reporte que me muestre todos aquellos que van a gerencia en ese mes, pero para ello tengo que considerar que el campo fecha hay valores equivalentes al mes y otros que dicen la palabra MENSUAL.

Como le hago ???

  #2 (permalink)  
Antiguo 21/05/2004, 14:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Si detallas que tipo de Base de datos estás usando sería lo ideal ..

En principio necesitas estructuras condiconales y operadores lógicos tipo WHERE y sus AND / OR según requieras ..

También sería ideal que detalles que tipo de dato (en que formato y tipo de campo de la BD) guardas tus fechas .. por qué lo ideal es que trabajes con fechas en campos de tipo fecha para facilitar las consultas por rangos de fechas ..

En tal caso todo esto (en principio) depende de SQL así que procedo a mover el mensaje al foro indicado "Base de datos".

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 21/05/2004, 15:16
gcs
 
Fecha de Ingreso: enero-2004
Ubicación: Heredia, Costa Rica
Mensajes: 191
Antigüedad: 20 años, 3 meses
Puntos: 0
Cluster,

Muchas gracias por responder, el asunto esta asi, tengo una Base de dato en MySQL, y tengo una tabla que tiene n cantidad de columnas (campos), tiene un ID, codigo, nombre, responsable, periodicidad, fecha, gerencia.

sin embargo en el campo fecha, se almacenan MESES, enero, febrero, marzo, etc... pero además algunos registros se tienen que guardar como mensuales, por lo que en resumen hay registros con nombre de mes y otros con la palabra MENSUAL.

Por lo anterior quiero hacer una consulta con AND o OR.... pero no me salia, descubri que tambien tengo que hacerle logica al orden a las columnas (campos) porque si de esta manera tendria problemas a la hora de recopilar la información. cierto ?


Cita:
Mensaje Original por Cluster
Si detallas que tipo de Base de datos estás usando sería lo ideal ..

En principio necesitas estructuras condiconales y operadores lógicos tipo WHERE y sus AND / OR según requieras ..

También sería ideal que detalles que tipo de dato (en que formato y tipo de campo de la BD) guardas tus fechas .. por qué lo ideal es que trabajes con fechas en campos de tipo fecha para facilitar las consultas por rangos de fechas ..

En tal caso todo esto (en principio) depende de SQL así que procedo a mover el mensaje al foro indicado "Base de datos".

Un saludo,
  #4 (permalink)  
Antiguo 21/05/2004, 21:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Bueno ... yo guardaría en ese campo "fecha" que sólo ha de guardar un "mes" (no fecha completa) el nº de mes 1->Enero, 2->febrero y .. (no me gusta la idea .. pero bueno) el "MENSUAL" .. aunque si entiendo bien "MENSUAL" equivaldría a que ese registro tendría que contener 1,2,....12 por qué está en todos esos meses (¿es así?) ..

Lo que pretendo llegar es a "normalizar" esa base de datos para poder hacer consultas exclusivamente por ese rango que necesites de fechas (nº de mes) .. Por ejemplo:

CURDATE() obtiene la fecha actual y MONTH() el mes de una fecha dada (en nº) .. así que si lo aplicas a CURDATE() obtendrás el nº de mes actual para hacer tu cóndicional en tu sentencia SQL:

SELECT * FROM tabla WHERE fecha=MONTH(CURDATE())

(siempre y cuando fecha guarde tu "mes" como numero ..)

Si luego necesitas obtener esa fecha como "nombre legible" 1 -> Enero . .2 -> Febrero ." puedes usar un simple array en tu lenguaje de programación para usar el indice del dato obtenido de tu consulta a tu campo "fecha" en dicho array:

(ejemplo en php)
Código PHP:
$array_meses=array(1=>"Enero","Febrero",....);
echo 
$array_meses[$fecha]; 
Si entendí bien la consulta SQL que comentabas en tu mensaje inicial .. atendiendo a que las fechas las guardariamos (esos meses) como nº y el caso especial "MENSUAL" (en un campo VARCHAR (7) o similar .. no uno numérico por qué guardamos también ese string "mensual"):

SELECT * FROM tabla WHERE (fecha=MONTH(CURDATE()) OR fecha='MENSUAL') AND GERENCIA=1

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 22/05/2004, 12:14
gcs
 
Fecha de Ingreso: enero-2004
Ubicación: Heredia, Costa Rica
Mensajes: 191
Antigüedad: 20 años, 3 meses
Puntos: 0
Cluster MUCHISIMAS GRACIAS!!!!

Clarisima la respuesta!!


[QUOTE]Mensaje Original por Cluster
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 05:02.