[Php-avanzado] Consulta sobre Query
pablo beroiza
beroiza.pablo en gmail.com
Jue Mar 1 10:29:43 ART 2012
Hola Leo: Perdón por ser tan escueto en la explicación (Solo te estaba
dando la parte que me esta dando problemas). Si, la solución que me
planteas es para los totales, que esta buenísima, pero yo quiero
esa proyección para hacer una resta parcial, por día, en donde muestro la
resta de los totales por día, osea los "saldo horas"("hora de salida menos
hora de entrada") menos "hora por dia".
En el id_asistencia 6 debería mostrar en el "saldo" 1:15 y no -0:05 ya que
es el mismo día de taller.
"Total por dia" y "Saldo horas" son campos calculados con php.
-Esta es la proyección que obtengo
(por plan)
H total Saldo
id_asistencia fecha horas por dia Entrada Salida por
dia horas
3 16/02/2012 1:20 <-14:00 - 17:00 ->
03:00 1:40
1 22/02/2012 1:20 <- 7:00 - 12:00 ->
05:00 3:40
4 23/02/2012 1:20 <- 14:00 - 15:00 ->
01:00 -0:20
6 23/02/2012 1:20 <- 10:00 - 11:15 ->
01:15 -0:05 (esta mal)
9 24/02/2012 1:20 <- 13:00 - 13:20 ->
00:20 -1:00
TOTAL 3:55 horas adelantadas
Esto es lo que quiero mostrar:
(por plan)
H total Saldo
id_asistencia fecha horas por dia Entrada Salida por
dia horas
3 16/02/2012 1:20 <-14:00 - 17:00 ->
03:00 1:40
1 22/02/2012 1:20 <- 7:00 - 12:00 ->
05:00 3:40
4 23/02/2012 1:20 <- 14:00 - 15:00 ->
01:00 -0:20
6 23/02/2012 <- 10:00 - 11:15 ->
01:15 1:15 (esta bien)
9 24/02/2012 1:20 <- 13:00 - 13:20 ->
00:20 -1:00
TOTAL 5:15 horas adelantadas
Saludos, y Gracias!!!
El 29 de febrero de 2012 22:07, Leonardo Tadei - Pegasus Tech Supply <
leonardot en pegasusnet.com.ar> escribió:
> Hola Pablo,
>
> No entiendo qué sentido semántico tiene la proyección que querés
> hacer :(
> Me desorienta que quieras proyectar el campo `horas_por_dia` y no la
> suma de las horas de cada día de cada alumno, o las horas de entrada y
> de salida.
>
> La estructura de la tabla "asistencias" es:
>
> CREATE TABLE IF NOT EXISTS `asistencias` (
> `id_asistencia` int(10) NOT NULL AUTO_INCREMENT,
> `id_alumno` int(10) DEFAULT NULL,
> `id_taller` int(10) DEFAULT NULL,
> `taller` varchar(50) COLLATE latin1_general_ci DEFAULT NULL,
> `id_plan` int(10) DEFAULT NULL,
> `nombre_plan` varchar(50) COLLATE latin1_general_ci DEFAULT NULL,
> `horas_por_dia` int(10) unsigned DEFAULT NULL,
> `hora_entrada` datetime DEFAULT NULL,
> `hora_salida` datetime DEFAULT NULL,
> `fecha` date DEFAULT NULL,
> `comentario` text COLLATE latin1_general_ci,
> PRIMARY KEY (`id_asistencia`)
> )
>
> Si lo que quisieras es saber qué alumnos fueron cada día, bastaría
> con
> que le agregues a la proyección GROUP BY `fecha`
> En este resultado los registros de tu ejemplo con ID 6 y 9 no
> aparecerían, sino que solo aparecería el 12, porque están agrupados.
>
> Contanos qué resultado querés obtener, pero en castellano, y después
> armamos la query. Por ejemplo:
> 1) proyectar todos los días que los alumnos asistieron a un taller
> [id_taller, id_alumno, fecha]
> 2) Proyectar la cantidad de horas por día que cursó un alumno cada día
> [id_alumno, fecha, suma horas cursadas, horas_por_dia]
>
> Saludos!
>
>
> PD: actualizá el asunto del mensaje ;-)
>
>
> El mié, 29-02-2012 a las 17:39 -0300, pablo beroiza escribió:
> > Leo! aca mando la estructura y como tendría que quedar la consulta.
> > Espero que se entienda
> >
> >
> > Esta es un ejemplo de la consulta a la tabla "asistencias"
> >
> >
> > id_asistencia fecha hora por dia
> > 3 16/02/2012 1:20
> > 1 17/02/2012 1:20
> > 4 18/02/2012 1:20
> > 6 18/02/2012 1:20
> > 9 18/02/2012 1:20
> > 12 20/02/2012 1:20
>
>
>
> > Lo que yo quiero es: si es igual a la fecha anterior no poner hora
> > por día ya que puede ser que trabaje dos o tres veces en el día.
> >
> >
> > id_asistencia fecha hora por dia
> > 3 16/02/2012 1:20
> > 1 17/02/2012 1:20
> > 4 18/02/2012 1:20
> > 6 18/02/2012
> > 9 18/02/2012
> > 12 20/02/2012 1:20
> > Gracias!!!
> >
> > El 28 de febrero de 2012 15:20, Leonardo Tadei - Pegasus Tech Supply
> > <leonardot en pegasusnet.com.ar> escribió:
> > Hola Pablo,
> >
> > El mar, 28-02-2012 a las 14:53 -0300, pablo beroiza escribió:
> > > Leo: Gracias por el concejo. Voy hacerlo con una tabla a
> > parte ya que
> > > entran los alumnos, solo para ver las horas que le
> > corresponden a su
> > > id_alumno. Y los profesores entrarían para agregar horas.
> >
> >
> > Entonces es un buen candidato para manejar la
> > autentificación por
> > separado...
> >
> > > Ahora te hago un par de consultas: descargue una clase para
> > hacer la
> > > autenticacion. ¿Puedo hacerle las modificaciones necesarias
> > para
> > > adaptarlo a mi proyecto? ya que viene con motor InnoDB y
> > tendria que
> > > agregar un par de campos mas.
> >
> >
> > Claro que sí!
> > Es muy raro el poder usar código de terceros tal y como
> > viene: siempre
> > hacen falta adaptaciones, traducciones y detalles.
> > Por el InnoDB no te preocupes: cuando importes la tabla
> > sacale el tipo
> > o directamente ponele MyISAM así te queda como las demás.
> >
> > > La otra pregunta es ¿Cómo puedo comparar dos registros de
> > una misma
> > > tabla? Quiero comparar el segundo registro con el primero,
> > el tercero
> > > con el segundo, el cuarto con el tercero...etc. Probé con
> > > mysql_data_seek pero no consigo hace lo que quiero. ¿Me
> > darias una
> > > mano con eso?
> >
> >
> > Lo decís muy en general, pero parece que lo que tenés
> > que hacer es una
> > query que te devuelva la comparación que te hace falta, y no
> > tratar de
> > comprar desde PHP sobre un volumen de datos.
> >
> > De qué tipo es la comparación? Si son mayores? menores?
> > iguales?
> > Pasá por acá la estructura de las tablas y 2 o 3
> > registros de ejemplo,
> > y vemos de armar la query necesaria.
> >
> > > Gracias!!!
> >
> > Por nada!
> >
> > --
> >
> > Leonardo Tadei
> > leonardot en pegasusnet.com.ar
> > Pegasus Tech Supply
> > Tel: (+54)(+223) 471-2880
> > La Salle 1131 - Mar del Plata - Argentina
> > http://www.pegasusnet.com.ar / http://blog.pegasusnet.com.ar
> > http://www.prometeustech.com.ar / http://www.grupopegasus.com
> >
> > Firma pública:
> > http://www.pegasusnet.com.ar/LeonardoTadei-public.key
> >
> > _______________________________________________
> > Php-avanzado mailing list
> > Php-avanzado en pato2.fi.mdp.edu.ar
> > http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> >
> >
> >
> > _______________________________________________
> > Php-avanzado mailing list
> > Php-avanzado en pato2.fi.mdp.edu.ar
> > http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>
> --
> Leonardo Tadei
> leonardot en pegasusnet.com.ar
> Blog: http://blog.pegasusnet.com.ar
> Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20120301/f2337dcd/attachment-0001.html>
Más información sobre la lista de distribución Php-avanzado