DROP PROCEDURE IF EXISTS uspGetTanarNemTanitottTanuloi GO CREATE PROCEDURE uspGetTanarNemTanitottTanuloi @pTanarId int ,@pOsztalycsoportId int = NULL ,@pTanevId int ,@pIntezmenyId int ,@pFeladatKategoriaId int = NULL AS BEGIN SET NOCOUNT ON; 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 ,ocs.ID AS OsztalyCsoportId ,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