Click here to Skip to main content
15,889,877 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Dear All,

Here is my small query for time and attendance

SQL
SELECT A.BADGENUMBER,A.EMPNAME,A.DESIG,(SELECT TOP 1(B.PTIME) FROM TBL_PUNCH B WHERE B.BADGENUMBER=A.BADGENUMBER AND B.SN=A.SN) FROM TBL_EMP A WHERE A.SN='4550962200016'


can any one please transform this using joins

Thanks in advance

Kreddy
Posted
Updated 10-May-13 21:24pm
v2

Try this:
SQL
SELECT TOP (1) A.BADGENUMBER,A.EMPNAME,A.DESIG,B.PTIME
FROM TBL_EMP A INNER JOIN TBL_PUNCH B ON B.BADGENUMBER=A.BADGENUMBER AND B.SN=A.SN)
WHERE A.SN='4550962200016'

or this:
SQL
SELECT DISTINCT A.BADGENUMBER,A.EMPNAME,A.DESIG,B.PTIME
FROM TBL_EMP A INNER JOIN TBL_PUNCH B ON B.BADGENUMBER=A.BADGENUMBER AND B.SN=A.SN)
WHERE A.SN='4550962200016'


More about join's:
http://www.w3schools.com/sql/sql_join.asp[^]
Visual Representation of SQL Joins[^]
 
Share this answer
 
Comments
KRISHNA REDDY AYYGARI 11-May-13 3:42am    
Thank You.. but your query return all the rows

pls find my requirement bellow.

i have two table one TBL_EMP ,TBL_PUNCH having badgenumber as primary and relation key


i need to generate the monthly report of the emplloyees using these two tables

TBL_EMP

ENO,EMPID,ENAME,DESIG

TBL_PUNCH
PID,EMPID,PDATE,PTIME,PTYPE (PTYPE IS 'IN' OR 'OUT')

I NEED THE REPORT FOR ALL THE DAYS IN MONTH LIKE THIS

EMPID EMPNAME DESIG DAY1 DAY2 ----- DAY30
----------------------------------------------------------------------------
1001 KRISHNA ADMIN 10:00 / 18:00 10:21 / 17:54 ------- 09:55 / 18:34

09:55 / 18:34 MEANS IN / OUT

PLS HELP ME IN THIS

I NEED IT URGENT

Thanks in Advance
Krishna
Maciej Los 11-May-13 3:46am    
Please, improve your question (use "Improve question" widget) and i'll try to improve my answer as soon as possible.
Hi,

I believe the query below should help.

SQL
SELECT A.BADGENUMBER, A.EMPNAME, A.DESIG, B.PTIME
FROM TBL_EMP A 
LEFT JOIN TBL_PUNCH B ON B.BADGENUMBER = A.BADGENUMBER AND B.SN = A.SN
WHERE A.SN='4550962200016'


Try that, and maybe check out this really helpful article on CodeProject Visual Representation of SQL Joins[^]

Thanks,
 
Share this answer
 
v2
SQL
SELECT
        A.BADGENUMBER,
        A.EMPNAME,
        A.DESIG,
        B.PTIME
FROM TBL_EMP A JOIN TBL_PUNCH B
ON B.BADGENUMBER=A.BADGENUMBER AND  B.SN=A.SN
WHERE A.SN='4550962200016'
 
Share this answer
 
Comments
KRISHNA REDDY AYYGARI 11-May-13 4:09am    
AT PRESENT I GET THE REPORT PERFECTLY BY USING THE BELLOW QUERY
BUT IT TAKES TOO MUCH TIME FOR EXECUTION. SO I NEED TO SIMPLIFY THE QUERY FOR FAST RESULT USING JOINS OR ANY ELSE

SELECT ROW_NUMBER() OVER (ORDER BY A.EMPID) As SLNO,A.EMPID,A.EMPNAME,

(ISNULL((SELECT TOP(1)B.STATUS+'-'+B.PTIME FROM TBL_PUNCH B WHERE B.BADGENUMBER=A.EMPID AND A.SN=B.SN AND CONVERT(VARCHAR(10),B.PDATE,105)='01-04-2013' AND B.PUNCHID=1 AND B.STATUS LIKE '%%' ORDER BY PTIME ASC),'')+'/'+ISNULL((SELECT TOP(1)B.STATUS+'-'+B.PTIME FROM TBL_PUNCH B WHERE B.BADGENUMBER=A.EMPID AND A.SN=B.SN AND CONVERT(VARCHAR(10),B.PDATE,105)='01-04-2013' AND B.PUNCHID=2 AND B.STATUS LIKE '%%' ORDER BY PTIME ASC),'')) AS [Apr 01],

(ISNULL((SELECT TOP(1)B.STATUS+'-'+B.PTIME FROM TBL_PUNCH B WHERE B.BADGENUMBER=A.EMPID AND A.SN=B.SN AND CONVERT(VARCHAR(10),B.PDATE,105)='02-04-2013' AND B.PUNCHID=1 AND B.STATUS LIKE '%%' ORDER BY PTIME ASC),'')+'/'+ISNULL((SELECT TOP(1)B.STATUS+'-'+B.PTIME FROM TBL_PUNCH B WHERE B.BADGENUMBER=A.EMPID AND A.SN=B.SN AND CONVERT(VARCHAR(10),B.PDATE,105)='02-04-2013' AND B.PUNCHID=2 AND B.STATUS LIKE '%%' ORDER BY PTIME ASC),'')) AS [Apr 02],

(ISNULL((SELECT TOP(1)B.STATUS+'-'+B.PTIME FROM TBL_PUNCH B WHERE B.BADGENUMBER=A.EMPID AND A.SN=B.SN AND CONVERT(VARCHAR(10),B.PDATE,105)='03-04-2013' AND B.PUNCHID=1 AND B.STATUS LIKE '%%' ORDER BY PTIME ASC),'')+'/'+ISNULL((SELECT TOP(1)B.STATUS+'-'+B.PTIME FROM TBL_PUNCH B WHERE B.BADGENUMBER=A.EMPID AND A.SN=B.SN AND CONVERT(VARCHAR(10),B.PDATE,105)='03-04-2013' AND B.PUNCHID=2 AND B.STATUS LIKE '%%' ORDER BY PTIME ASC),'')) AS [Apr 03],

(ISNULL((SELECT TOP(1)B.STATUS+'-'+B.PTIME FROM TBL_PUNCH B WHERE B.BADGENUMBER=A.EMPID AND A.SN=B.SN AND CONVERT(VARCHAR(10),B.PDATE,105)='04-04-2013' AND B.PUNCHID=1 AND B.STATUS LIKE '%%' ORDER BY PTIME ASC),'')+'/'+ISNULL((SELECT TOP(1)B.STATUS+'-'+B.PTIME FROM TBL_PUNCH B WHERE B.BADGENUMBER=A.EMPID AND A.SN=B.SN AND CONVERT(VARCHAR(10),B.PDATE,105)='04-04-2013' AND B.PUNCHID=2 AND B.STATUS LIKE '%%' ORDER BY PTIME ASC),'')) AS [Apr 04],

(ISNULL((SELECT TOP(1)B.STATUS+'-'+B.PTIME FROM TBL_PUNCH B WHERE B.BADGENUMBER=A.EMPID AND A.SN=B.SN AND CONVERT(VARCHAR(10),B.PDATE,105)='05-04-2013' AND B.PUNCHID=1 AND B.STATUS LIKE '%%' ORDER BY PTIME ASC),'')+'/'+ISNULL((SELECT TOP(1)B.STATUS+'-'+B.PTIME FROM TBL_PUNCH B WHERE B.BADGENUMBER=A.EMPID AND A.SN=B.SN AND CONVERT(VARCHAR(10),B.PDATE,105)='05-04-2013' AND B.PUNCHID=2 AND B.STATUS LIKE '%%' ORDER BY PTIME ASC),'')) AS [Apr 05],

A.DEPT FROM TBL_EMP A WHERE A.SN='4550962200036' AND A.DEPT='All Departments'

THIS IS MY QUERY PRESENTLY USING.

IF ANY OF YOU WANTS TO CONNECT TO THE DATABASE I WILL GIVE YOU THE TEST DB CREDENTIALS

PLS HELP ME...

Thnaks in Advance
Kreddy
KRISHNA REDDY AYYGARI 11-May-13 5:00am    
Any one There .. pls help me.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900