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

consultas

Estas en el tema de consultas en el foro de SQL Server en Foros del Web. holas a todos, tengo una tabla q se llama maestro los campos: cedula, contrato,actividad,descripcion,fecha, horas Quiero seleccionar las horas, cedula y fecha dond el contrato ...
  #1 (permalink)  
Antiguo 14/06/2006, 08:47
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 19 años, 2 meses
Puntos: 10
consultas

holas a todos,

tengo una tabla q se llama maestro
los campos: cedula, contrato,actividad,descripcion,fecha, horas

Quiero seleccionar las horas, cedula y fecha dond el contrato sea xxx y la fecha est entre dos valores
eso lo se hacer

Código PHP:
$query="SELECT * FROM maestro WHERE contrato= '$contrato' and fecha BETWEEN '$fecha_del' AND '$fecha_al' "
lo q no se hacer es sumar las horas dependiendo una fecha
ejemplo
el 19/06/05 hice 5 horas en x actividad en el contrato xxx
el mismo dia hice 3 horas en otra actividad tambien en el contrato xxx
quiero q me aparzca q yo trabaje ese dia la 8 horas en ese proyecto x
me explico
__________________
.-._.-. [email protected]._.-.
  #2 (permalink)  
Antiguo 14/06/2006, 09:15
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Hola Mirovita:
Puedes hacerlo de esta forma

$query="SELECT sum(monto) FROM maestro WHERE contrato= '$contrato' and fecha BETWEEN '$fecha_del' AND '$fecha_al' ";

Ahora si quieres visualizar otros campos:

$query="SELECT actividad,sum(monto)
FROM maestro
WHERE contrato= '$contrato' and fecha BETWEEN '$fecha_del' AND '$fecha_al'
GROUP BY actividad";

Caso ejemplo, tomando actividad como un campo.
Saluditos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #3 (permalink)  
Antiguo 14/06/2006, 09:20
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 19 años, 2 meses
Puntos: 10
ok yo hice esto:

Código PHP:
$query "SELECT cedula, fecha, SUM(horas) AS horastotales, contrato FROM maestro WHERE (contrato = '$contrato') AND (Fecha BETWEEN '$fecha_del' AND '$fecha_al') GROUP BY cedula, fecha, contrato"
pero me da el siguiente error:

Cita:
Warning: pg_exec() [function.pg-exec]: Query failed: ERROR: syntax error at or near "horas" at character 31 in /xxx/xxx/xxx/xxx/control de horas/horas_proyecto1.php on line 62
Cita:
Warning: pg_fetch_array() expects parameter 1 to be resource, boolean given in /xxx/xxx/xxx/xxx/control de horas/horas_proyecto1.php on line 65

me imagino q tengo algo mal hecho pero no tengo ni idea, (estoy segura q es una burrada)
__________________
.-._.-. [email protected]._.-.
  #4 (permalink)  
Antiguo 14/06/2006, 09:55
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
HOla Mirovi de mi alma...

Pues depende de que tipo de dato sea 'horas'.

Por cierto, podrías ejecutar tu sentencia en el analizador de consultas y decirnos que error te arroja la base de datos, al parecer tu select está bien hecho pero no nos dices que error te lanza la base
  #5 (permalink)  
Antiguo 14/06/2006, 09:56
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Mmmmm, bueno, solo me quedaria preguntarte que tipo de dato es el campo horas?...
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #6 (permalink)  
Antiguo 14/06/2006, 10:28
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 19 años, 2 meses
Puntos: 10
Bueno y alo hice, tenia un problema con los tipos de datos.. gracias chicos

me quedo asi:

Código PHP:
SELECT cedulafechaSUM(horas) AS horastotalescontrato FROM maestro WHERE contrato '$contrato' AND Fecha BETWEEN '$fecha_del' AND '$fecha_al' GROUP BY cedulafechacontrato 
__________________
.-._.-. [email protected]._.-.
  #7 (permalink)  
Antiguo 14/06/2006, 14:20
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 19 años, 2 meses
Puntos: 10
acabo de ver q cuando hago la cosulta me sale un pequeño detalle, no me hace bien la consulta, sera q alguien entiende porq...

consulta:

Código PHP:
SELECT maestro.cedulamaestro.fechasum(maestro.horas) AS horasmaestro.contratousuario.nombreusuario.apellido FROM maestro LEFT JOIN usuario ON maestro.cedula usuario.cedula WHERE maestro.contrato '1590' AND maestro.fecha BETWEEN '1/6/2006' AND '6/6/2006' GROUP BY maestro.cedulamaestro.fechamaestro.contratousuario.cedulausuario.nombreusuario.apellido 
ok el problema es el siguiente, en el quiery le digo q la consulta sea entre las fechas 1/6/2006 y 6/6/2006...

e la base de dqatos tengo solo fechas consecutivas desd el 5/6/2006 al 11/6/2006, y el resultado de la consulta me muestra los resultados de las fechas:

5/6/2006
6/6/2006
10/6/2006
11/6/2006

no entiendo porq, no deberia mostrarme los dos ultimos....

si le digo del 1/6/2006 al 9/6/2006 me los muetsra todos desd el 5/6/2006 al 11/6/2006, no entiendo...

podrian ayudarme...?
__________________
.-._.-. [email protected]._.-.
  #8 (permalink)  
Antiguo 14/06/2006, 14:33
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Hola:
Creo que te sale eso por que estas tomando las fechas como string. No se que tipo de dato sea la fecha (aunque suene tonto que lo escriba), pues en la condición estas comparando strings.
Si tu campo es date o similar, hazle el CONVERT a los valores que comparas.
Bueno, es lo que podria comentarte, quizás sea eso.
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #9 (permalink)  
Antiguo 15/06/2006, 14:18
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 19 años, 2 meses
Puntos: 10
ok fijat la fecha en la bd es tipo date... y fijat lo q me pasa ahora, si le pongo un rango entre 1/6/2006 al 12/6/2006 me muestra todo sin problemas.. pero cuando coloco mayor al 12/6/2006 me sale lo siguiente sabras q pasa

Cita:
Warning: pg_exec() [function.pg-exec]: Query failed: ERROR: date/time field value out of range: "30/6/2006" HINT: Perhaps you need a different "datestyle" setting. in /Library/WebServer/Documents/borrador/control de horas/horas_proyecto1.php on line 69

gracias por la ayuda
__________________
.-._.-. [email protected]._.-.
  #10 (permalink)  
Antiguo 15/06/2006, 14:31
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Hola:
El error te sale por que te esta tomando el primer valor como el mes y el segundo como el dia, por eso no te acepta mayor a 12. Debes formatear el valor a dd/mm/yyyy o en su defecto mandar los valores, primero el mes, luego el dia y luego el año (06/30/2006)

Aqui una página, puede ayudarte:
http://www.microsoft.com/latam/techn...rt11/art11.asp

Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #11 (permalink)  
Antiguo 16/06/2006, 05:31
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 19 años, 2 meses
Puntos: 10
gracias y alo solucione, un millon, todos son unos barbaros, besos...
__________________
.-._.-. [email protected]._.-.
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 06:29.