Skip to content
Loading
How To Insert Data With INNER JOIN With 3 TABLE
  • Msg 257, Level 16, State 3, Procedure SpCheckInCheckOut, Line 21 [Batch Start Line 0]
    Implicit conversion from data type datetime to int is not allowed. Use the CONVERT function to run this query.
  • Sachin Singh
    follow this
    1. Create table tblCheckin    
    2. (    
    3.     CheckInID int not null,    
    4.     CheckIn datetime null,    
    5.     sortoder int not null    
    6.     CONSTRAINT pk_tblCheckin PRIMARY KEY (CheckInID)    
    7. );    
    8. Create table tblCheckout    
    9. (    
    10.     
    11.     CheckOutID int not null,    
    12.     CheckOut datetime null,    
    13.     sortoder int not null    
    14.     CONSTRAINT pk_tblCheckout PRIMARY KEY (CheckOutID)    
    15.     
    16. );    
    17. Create table tblWoker    
    18. (    
    19.     Empid int IDENTITY(1,1) not null,    
    20.     Name varchar(300) not null,    
    21.     Worker varchar(300) not null,    
    22.     Cnic varchar(300) not null,    
    23.     CardNumber varchar(300) not null,    
    24.     FlatNumber varchar(300) not null,    
    25.     Designation varchar(300) not null,   
    26.     CheckInID INT NULL,  
    27.     CheckOutID  INT NULL,  
    28.     CONSTRAINT pk_tblWoker PRIMARY KEY (Empid),    
    29.     CONSTRAINT fk_tblCheckin FOREIGN KEY (CheckInID) REFERENCES tblCheckin (CheckInID),    
    30.     CONSTRAINT fk_tblCheckout FOREIGN KEY (CheckOutID) REFERENCES tblCheckout (CheckOutID),    
    31. );    
     
    1. Create table tblCheckin  
    2. (  
    3.     CheckInID int not null,  
    4.     CheckIn datetime,  
    5.     sortoder int not null  
    6.     CONSTRAINT pk_tblCheckin PRIMARY KEY (CheckInID)  
    7. );  
    8. Create table tblCheckout  
    9. (  
    10.   
    11.     CheckOutID int not null,  
    12.     CheckOut datetime,  
    13.     sortoder int not null  
    14.     CONSTRAINT pk_tblCheckout PRIMARY KEY (CheckOutID)  
    15.   
    16. );  
    17. Create table tblWoker  
    18. (  
    19.     Empid int IDENTITY(1,1) not null,  
    20.     Name varchar(300) not null,  
    21.     Worker varchar(300) not null,  
    22.     Cnic varchar(300) not null,  
    23.     CardNumber varchar(300) not null,  
    24.     FlatNumber varchar(300) not null,  
    25.     Designation varchar(300) not null,  
    26.     CONSTRAINT pk_tblWoker PRIMARY KEY (Empid),  
    27.     CONSTRAINT fk_tblCheckin FOREIGN KEY (CheckInIDREFERENCES tblCheckin (CheckInID),  
    28.     CONSTRAINT fk_tblCheckout FOREIGN KEY (CheckOutIDREFERENCES tblCheckout (CheckOutID),  
    29. );  
    Error In HeighLigt What Wrong Code
  • Sachin Singh
    You have two mistakes,
    copy paste this
    1. Create procedure SpCheckInCheckOut     
    2. @Name Varchar(250)='',     
    3. @Woker Varchar(250)='',     
    4. @Cnic Varchar(250)='',    
    5. @CardNumber Varchar(250)='',    
    6. @FlatNumber Varchar(250)='',    
    7. @Designation Varchar(250)='',    
    8. @CheckinID INT=0,    
    9. @CheckIn DateTime,    
    10. @CheckOutID INT=0,      
    11. @CheckOut DateTime,    
    12. @Action Varchar(7)=''     
    13. AS     
    14. BEGIN     
    15. IF(@Action='Checkin')    
    16. BEGIN     
    17. INSERT INTO Employee (Name,Woker,Cnic,CardNumber,FlatNumber,Designation)    
    18. VALUES (@Name,@Woker,@Cnic,@CardNumber,@FlatNumber,@Designation);    
    19. DECLARE @Wrkid int = 0;    
    20. SET @Wrkid=@Scope_IDENTITY(),    
    21. INSERT INTO CheckIn(WokerID,CheckinID,[Check-In])VALUES (@Wrkid,@CheckinID,@CheckIn)    
    22. INSERT INTO CheckOut(WokerID,CheckOutID,[Check-Out])VALUES(@Wrkid,0,NULL)    
    23. END    
    24. IF(@Action='CheckOut')    
    25. BEGIN    
    26. UPDATE CheckOut SET CheckOutID=@CheckOutID,[Check-Out]=@CheckOut;    
    27. END    
    28. END    
    @@Identity will not give you right Id, if multiple sessions are up at a time. so i removed that. 
  • Msg 102, Level 15, State 1, Procedure SpCheckInCheckOut, Line 24 [Batch Start Line 0]
    Incorrect syntax near '1'.
    1. Create procedure SpCheckInCheckOut   
    2. (  
    3.   
    4. @Name Varchar(250)='',   
    5. @Woker Varchar(250)='',   
    6. @Cnic Varchar(250)='',  
    7. @CardNumber Varchar(250)='',  
    8. @FlatNumber Varchar(250)='',  
    9. @Designation Varchar(250)='',  
    10. @CheckinID INT=0,  
    11. @CheckIn DateTime,  
    12. @CheckOutID INT=0,    
    13. @CheckOut DateTime,  
    14. @Action Varchar(7)=''   
    15.   
    16. )  
    17. AS   
    18. BEGIN   
    19. IF(@Action='Checkin')  
    20. BEGIN   
    21. INSERT INTO Employee (Name,Woker,Cnic,CardNumber,FlatNumber,Designation)  
    22. VALUES (@Name,@Woker,@Cnic,@CardNumber,@FlatNumber,@Designation);  
    23. DECLARE @Wrkid int = 0;  
    24. SET @Wrkid=@@IDENTITY(1,1)PRIMARY KEY,  
    25. INSERT INTO CheckIn(WokerID,CheckinID,[Check-In])VALUES (@Wrkid,@CheckinID,@CheckIn)  
    26. INSERT INTO CheckOut(WokerID,CheckOutID,[Check-Out])VALUES(@Wrkid,0,NULL)  
    27. END  
    28. IF(@Action='CheckOut')  
    29. BEGIN  
    30. UPDATE CheckOut SET CheckOutID=@CheckOutID,[Check-Out]=@CheckOut;  
    31. END  
    32. END  
  • Sachin Singh
    You need this
     
    1. Create procedure SpCheckInCheckOut  
    2. @Name Varchar(250)='',  
    3. @worker Varchar(250)='',  
    4. @Cnic INT=0,  
    5. @CardNumber INT=0,  
    6. @RalNumbe INT=0,  
    7. @Designation Varchar(250)=''  
    8. @CheckOutId INT=0,  
    9. @checkInId INT=0,  
    10. @checkOut DateTime,  
    11. @CheckIn DateTime,  
    12. @Action Varchar(7)=''  
    13. as  
    14. begin  
    15. if(@Action='Checkin')  
    16. begin  
    17. insert into Employee (Name,worker,Cnic,CardNumber,RalNumber,Designation)  
    18. values(@Name,@worker,@Cnic,@CardNumber,@RalNumber,@Designation);  
    19. Declare @WkrId INT =0;  
    20. SET @WkrId=@ScopeIdentity();  
    21. Insert into CheckIn(WorkerId,checkInId,CheckIn) values(@WkrId,@checkInId,@CheckIn)  
    22. Insert into CheckOut(WorkerId,CheckOutId,checkOut) values(@WkrId,0,null)  
    23. end  
    24. if(@Action='CheckOut')  
    25. begin  
    26. Update CheckOut set CheckOutId=@CheckOutId, checkOut=@checkOut;  
    27. end  
    28.   
    29. end  
    Note:- Make sure CheckOutId,checkOut in the table CheckOut are nullable columns.
  • Jaydeep Patil
    Hi,
     
    Check the following link, I think that will help you
     
    https://stackoverflow.com/questions/15115759/update-multiple-tables-in-sql-server-using-inner-join 
    https://www.sqlshack.com/a-step-by-step-walkthrough-of-sql-inner-join/
     
    Regards,
    Jaydeep Patil 
  • Select * From Employee 
    only Data Insert  
    Select * from CheckIn
    only Data Insert  
    Select * from CheckOut update
    only Data Update 
     
    Employe Date And Checkin In Same id Save