[Php-avanzado] consulta query
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Mie Ago 11 18:36:15 ART 2010
Hola Bruno,
la primer opción te excluye a los que todavía no vinieron nunca, porque
para ellos A.fecha_sesion es NULL
Una solución es agregar como condición OR que A.fecha_sesion = NULL
Ojo! Vas a tener que encerrar las condiciones entre paréntesis para que
signifiquen lo que estamos hablando; algo así como
AND (A.fecha_sesion<'$fechahoy' OR A.fecha_sesion=NULL)
o más claramente todavía:
AND ((A.fecha_sesion<'$fechahoy') OR (A.fecha_sesion=NULL))
En el caso del LEFT JOIN, también deberías agregar que pueden ser
nulos...
Otra solución que pensé en la respuesta pasada pero no te dije, es que
la interfaz muestre a todos los de hoy, pero si A.fecha_sesion ==
'$fechahoy', aparezca un "presente" en lugar del botón de tomar
asistencia.
Con esto mostrarías todos los del día, pero los que ya vinieron no se
pueden volver a usar, a la vez que se ve el día completo siempre.
Saludos!
El mié, 11-08-2010 a las 18:54 +0000, Bruno Meschini escribió:
> bien hay algo que no funciona,,,, estoy trabajando dos opciones...
>
> la primera...
>
> SELECT R.*, D.*, P.id_paciente, P.nombre, P.apellido,
> count(A.id_rehabilitacion)AS presentes, A.fecha_sesion
> FROM (rehabilitaciones AS R,
> dias_rehabilitaciones AS D, pacientes AS P)
> LEFT JOIN asistencias AS A ON
> R.id_rehabilitacion= A.id_rehabilitacion
> WHERE R.id_rehabilitacion =
> D.id_rehabilitacion
> AND R.id_paciente =
> P.id_paciente
> AND D.id_dia=".$dia."
> AND (R.horario >='$h1') AND
> (R.horario <= '$h2')
> AND (R.fecha_comienzo
> <='$fechahoy')
>
>
> AND
> A.fecha_sesion<'$fechahoy'
>
>
> GROUP BY A.id_rehabilitacion
> ORDER BY horario
>
>
>
> Agregando este AND A.fecha_sesion<'$fechahoy' la consulta me excluye
> los pacientes que aun no tienen registros en asistencia,
> pero tienen que venir...
>
>
>
> la segunda entonces lo pongo en LEFT JOIN
>
>
> SELECT R.*, D.*, P.id_paciente, P.nombre, P.apellido,
> count(A.id_rehabilitacion)AS presentes,
> A.fecha_sesion
> FROM (rehabilitaciones AS R,
> dias_rehabilitaciones AS D, pacientes AS P)
> LEFT JOIN asistencias AS A ON
> R.id_rehabilitacion= A.id_rehabilitacion AND
> A.fecha_sesion<'$fechahoy'
> WHERE R.id_rehabilitacion =
> D.id_rehabilitacion
> AND R.id_paciente =
> P.id_paciente
> AND D.id_dia=".$dia."
> AND (R.horario >='$h1') AND
> (R.horario <= '$h2')
> AND (R.fecha_comienzo
> <='$fechahoy')
> GROUP BY A.id_rehabilitacion
> ORDER BY horario
>
>
>
>
> aqui solo me excluye la sesion cuya fecha coincide con el dia de hoy
> pero me sigue listando el paciente
>
>
>
>
> > From: leonardot en pegasusnet.com.ar
> > To: php-avanzado en pato2.fi.mdp.edu.ar
> > Date: Wed, 11 Aug 2010 15:01:55 -0300
> > Subject: Re: [Php-avanzado] consulta query
> >
> > El mié, 11-08-2010 a las 16:46 +0000, Bruno Meschini escribió:
> > > gracias leo, ahora lo agrego..
> >
> > Después contanos...
> >
> > > te escribi a tu mail hace unos dias,, parece que no lo viste,,,
> ahora
> > > te lo reenvio..
> >
> > Ok. Lo busco...
> >
> > > saludos,
> >
> > =mente!
> > --
> >
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
Más información sobre la lista de distribución Php-avanzado