77 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
DROP PROCEDURE IF EXISTS uspGetTanarNemTanitottTanuloi
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE uspGetTanarNemTanitottTanuloi
 | 
						|
   @pTanarId int
 | 
						|
  ,@pOsztalycsoportId int = NULL 
 | 
						|
  ,@pTanevId int
 | 
						|
  ,@pIntezmenyId int
 | 
						|
  ,@pFeladatKategoriaId int = NULL
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
  DECLARE 
 | 
						|
     @sql nvarchar(max)
 | 
						|
    ,@sqlWhere nvarchar(max)
 | 
						|
 | 
						|
  SET @sql = N'
 | 
						|
  SELECT 
 | 
						|
  	 fh.ID
 | 
						|
    ,fh.C_NYOMTATASINEV AS TanuloNev
 | 
						|
    ,IIF(fh.C_NEVSORREND = ''T'',
 | 
						|
       fh.C_UTONEV + '' '' + fh.C_VEZETEKNEV,
 | 
						|
       fh.C_VEZETEKNEV + '' '' + fh.C_UTONEV
 | 
						|
     ) AS TanuloNevElotagNelkul
 | 
						|
    ,ocs.C_nev AS OsztalyCsoportNev
 | 
						|
	,fh.C_SZULETESIDATUM AS SzuletesiIdo
 | 
						|
	,fh.C_OKTATASIAZONOSITO AS OktAzon
 | 
						|
  FROM T_FELHASZNALO fh
 | 
						|
    INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_TANULOID = fh.ID AND tcs.TOROLT = ''F''
 | 
						|
    INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
 | 
						|
								   AND (ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL)
 | 
						|
								   AND ocs.TOROLT = ''F'''
 | 
						|
    
 | 
						|
  SET @sqlWhere = N'
 | 
						|
    WHERE NOT EXISTS ( /* Tanított tanulók */
 | 
						|
      SELECT 1
 | 
						|
      FROM T_TANULOCSOPORT_OSSZES tcs
 | 
						|
        INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID
 | 
						|
      WHERE f.C_TANARID = @pTanarId
 | 
						|
        AND f.TOROLT = ''F''
 | 
						|
        AND tcs.TOROLT = ''F''
 | 
						|
        AND tcs.C_BELEPESDATUM <= GETDATE()
 | 
						|
      	AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > GETDATE()) 
 | 
						|
        AND tcs.C_TANULOID = fh.ID
 | 
						|
      )
 | 
						|
    AND fh.TOROLT = ''F''
 | 
						|
    AND fh.C_TANEVID = @pTanevId
 | 
						|
    AND fh.C_INTEZMENYID = @pIntezmenyId
 | 
						|
    AND tcs.C_BELEPESDATUM <= GETDATE()
 | 
						|
  	AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > GETDATE())'
 | 
						|
    
 | 
						|
  IF @pOsztalycsoportId IS NULL BEGIN
 | 
						|
    SET @sql += N'
 | 
						|
    INNER JOIN T_OSZTALY o ON o.ID = ocs.ID /* Ha több osztálya van a diának, többször jelenik meg */
 | 
						|
    '
 | 
						|
  END
 | 
						|
    
 | 
						|
  IF @pOsztalycsoportId IS NOT NULL BEGIN
 | 
						|
    SET @sqlWhere += N' 
 | 
						|
    AND tcs.C_OSZTALYCSOPORTID = @pOsztalycsoportId'
 | 
						|
  END  
 | 
						|
 | 
						|
  SET @sql += @sqlWhere 
 | 
						|
  
 | 
						|
  EXEC sp_executesql @sql, N'
 | 
						|
     @pTanarId int
 | 
						|
    ,@pOsztalycsoportId int
 | 
						|
    ,@pTanevId int
 | 
						|
    ,@pIntezmenyId int
 | 
						|
    ,@pFeladatKategoriaId int'
 | 
						|
    ,@pTanarId = @pTanarId
 | 
						|
    ,@pOsztalycsoportId = @pOsztalycsoportId
 | 
						|
    ,@pTanevId = @pTanevId
 | 
						|
    ,@pIntezmenyId = @pIntezmenyId
 | 
						|
    ,@pFeladatKategoriaId = @pFeladatKategoriaId
 | 
						|
END
 | 
						|
GO
 |