DROP PROCEDURE IF EXISTS uspGetEvesOraszamForTantargyAndOsztaly GO CREATE PROCEDURE uspGetEvesOraszamForTantargyAndOsztaly @pTanevId int ,@pIntezmenyId int ,@pOsztalyCsoportId int ,@pTantargyId int ,@pBeallitasTanarSzamit int ,@pBeallitasOsztalybontasEgybe int AS BEGIN SET NOCOUNT ON; DECLARE @pTanarSzamit bit ,@pOsztalybontasEgybe bit ,@pOsztalybontasCsoport bit SET @pTanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(@pBeallitasTanarSzamit, @pIntezmenyId, @pTanevId) SET @pOsztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(@pBeallitasOsztalybontasEgybe, @pIntezmenyId, @pTanevId) IF EXISTS (SELECT 1 FROM T_CSOPORT_OSSZES cs WHERE cs.TOROLT = 'F' AND cs.C_ALTANEVID = @pTanevId AND ((cs.ID = @pOsztalyCsoportId AND cs.C_OSZTALYBONTASID IS NOT NULL) OR cs.C_OSZTALYBONTASID = @pOsztalyCsoportId)) BEGIN SET @pOsztalybontasCsoport = 1 END IF @pOsztalybontasEgybe = 0 OR @pOsztalybontasCsoport = 0 BEGIN IF @pTanarSzamit = 1 BEGIN SELECT COUNT(t.ID) AS EvesOraszam FROM T_TANITASIORA_OSSZES t WHERE t.C_MEGTARTOTT = 'T' AND t.C_SORSZAMOZANDO = 'T' AND t.C_TANTARGYID = @pTantargyId AND t.C_OSZTALYCSOPORTID = @pOsztalyCsoportId AND t.C_TANEVID = @pTanevId AND t.TOROLT = 'F' GROUP BY t.C_TANARID END ELSE BEGIN SELECT COUNT(t.ID) AS EvesOraszam FROM T_TANITASIORA_OSSZES t WHERE t.C_MEGTARTOTT = 'T' AND t.C_SORSZAMOZANDO = 'T' AND t.C_TANTARGYID = @pTantargyId AND t.C_OSZTALYCSOPORTID = @pOsztalyCsoportId AND t.C_TANEVID = @pTanevId AND t.TOROLT = 'F' END END ELSE BEGIN CREATE TABLE #KapcsolodoOsztalyCsoportok ( ID int ,PRIMARY KEY (ID) ) INSERT INTO #KapcsolodoOsztalyCsoportok ( ID ) ( SELECT cs.ID AS ID FROM T_CSOPORT_OSSZES cs WHERE cs.TOROLT = 'F' AND cs.C_ALTANEVID = @pTanevId AND cs.C_OSZTALYBONTASID = ( SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT_OSSZES scs WHERE scs.TOROLT = 'F' AND scs.C_ALTANEVID = @pTanevId AND scs.ID = @pOsztalyCsoportId AND scs.C_OSZTALYBONTASID IS NOT NULL ) UNION SELECT cs.C_OSZTALYBONTASID AS ID FROM T_CSOPORT_OSSZES cs WHERE cs.TOROLT = 'F' AND cs.C_ALTANEVID = @pTanevId AND cs.ID = @pOsztalyCsoportId AND cs.C_OSZTALYBONTASID IS NOT NULL UNION SELECT cs.ID AS ID FROM T_CSOPORT_OSSZES cs WHERE cs.TOROLT = 'F' AND cs.C_ALTANEVID = @pTanevId AND cs.C_OSZTALYBONTASID = @pOsztalyCsoportId UNION SELECT @pOsztalyCsoportId AS ID ) IF @pTanarSzamit = 1 BEGIN SELECT COUNT(t.ID) AS EvesOraszam FROM T_TANITASIORA_OSSZES t INNER JOIN #KapcsolodoOsztalyCsoportok k ON k.ID = t.C_OSZTALYCSOPORTID WHERE t.C_MEGTARTOTT = 'T' AND t.C_SORSZAMOZANDO = 'T' AND t.C_TANTARGYID = @pTantargyId AND t.C_TANEVID = @pTanevId AND t.TOROLT = 'F' GROUP BY t.C_TANARID END ELSE BEGIN SELECT COUNT(t.ID) AS EvesOraszam FROM T_TANITASIORA_OSSZES t INNER JOIN #KapcsolodoOsztalyCsoportok k ON k.ID = t.C_OSZTALYCSOPORTID WHERE t.C_MEGTARTOTT = 'T' AND t.C_SORSZAMOZANDO = 'T' AND t.C_TANTARGYID = @pTantargyId AND t.C_TANEVID = @pTanevId AND t.TOROLT = 'F' END END END GO