PDA

Ver la Versión Completa : Select un poco jodida!!


_Willa
16-06-2003, 18:36:08
Buenas,

Llevo rato intentandolo pero no lo he conseguido.
Trata de una tabla de Asistencia, en
donde tiene los siguientes campos
dni, fecha, hora

Resulta que tengo la siguiente select:

SELECT DISTINCT Dni, COUNT(*) AS NumAsis
FROM Asistencias
WHERE Fecha BETWEEN '01/01/2000' AND '01/01/2003'
GROUP BY Dni
having COUNT(*)>50

Bien, en este primer filtro tengo los trabajadores que han asistido un minimo de 50 veces, pero quiero saber ademas, la fecha y hora de asistencia.


Alguien me puede indicar, retocando esta select para que ademas de lo que pone arriba, tambien pueda ver la fecha y asistencias de esas veces que ha venido al trabajo.

ok, Gracias

pedrohdez
16-06-2003, 20:09:19
Pues con un select anidado, no sera lo mas rapido pero te dara la información,


select DNI, fecha, hora, etc from Asistencias
where DNI in (SELECT DISTINCT Dni, COUNT(*) AS NumAsis
FROM Asistencias
WHERE Fecha BETWEEN '01/01/2000' AND '01/01/2003'
GROUP BY Dni
having COUNT(*)>50)
order by DNI, Fecha, Hora


Aunque el DISTINCT que tienes en el select, no que hace, si ya has agrupado por DNI, no hay duplicados, asi que el distinst es totalmente redundante.

Aprendiz
17-06-2003, 11:52:40
Yo te diría que si te decantas por la solución del Select anidado, quites además del DISTINCT el COUNT(*) del select. No tiene sentilo la verdad.

Si lo que quieres es mostrar fecha yo hora al lado de dni y numero de incidencias pues te diría que tampoco tiene mucho sentido, repites 'x' veces dni e incidencias. Si estás trabajando con delphi, supongo si estás en este club, te diría que lo dividieses en dos consultas por separado con una relación Master-Source. Si no es esto lo que quieres hacer pues anida el contador de las incidencias en el select donde recuperas fecha, hora, etc...

Saludos.