2010-03-15 5 views
2

Je suis en train d'écrire une déclaration pour compter la présence des employés et d'exécuter leur id, name et les jours qu'il a travail sur les 3 derniers mois en comptant le double id sur NewTimeAttendance pour le mois 1, 2 et 3 .comptage présence des employés

J'ai essayé de compter:

Select COUNT(employeeid) 
    from NewTimeAttendance 
where employeeid=1 and (month=1 or month = 2 or month = 3) 

Ceci est absolument travail, mais seulement pour un employé.

Le deuxième essai:

SELECT COUNT(NewEmployee.EmployeeID) 
    FROM NewEmployee INNER JOIN NewTimeAttendance 
    ON NewEmployee.EmployeeID = NewTimeAttendance.EmployeeID 
    and (month=1 or month =2 or month = 3) 

Cela fonctionne, mais il compte tous les employés et je veux lui faire exécuter chaque EmployeeId, EmployeeName et number of days comme nouveau record.

dernier essai: (avant de voir le code ... il est faux ..mais je suis en train)

for i in 0..27 loop 
    SELECT COUNT(NewEmployee.EmployeeID),NewEmployee.EmployeeId,EmployeeName 
    FROM NewEmployee INNER JOIN NewTimeAttendance 
     ON NewEmployee.EmployeeID(i) = NewTimeAttendance.EmployeeID 
     and (month=1 or month =2 or month = 3) 
end loop 

je vraiment besoin d'aide ... merci à l'avance.

+0

@jjj, agréable de voir que vous avez essayé de résoudre le problème vous-même d'abord. –

+0

^_^... ..thanks – jjj

Répondre

5

Vous avez besoin d'une fonction GROUP BY, essayez:

SELECT COUNT(NewEmployee.EmployeeID), NewEmployee.EmployeeId,EmployeeName 
FROM NewEmployee INNER JOIN NewTimeAttendance 
    ON NewEmployee.EmployeeID = NewTimeAttendance.EmployeeID 
    and (month=1 or month =2 or month = 3) 
GROUP BY NewEmployee.EmployeeID, EmployeeName 
+1

Vous devrez également mettre EmployeeName dans votre instruction groupBy, je pense. – Paddy

+1

@Paddy, merci d'avoir raison. J'ai mis à jour ma réponse en conséquence. –

+0

je verrai .........! – jjj