-- ============================================= -- Description: -- ============================================= DROP PROCEDURE IF EXISTS [dbo].[uspGetTanuloErtekelesDataSetByFotargyAltargy] GO CREATE PROCEDURE [dbo].[uspGetTanuloErtekelesDataSetByFotargyAltargy] @pIntezmenyId INT ,@pTanevId INT ,@pTanarId INT ,@pTanuloId INT ,@pFotargyAltargyId INT ,@pDatum DATE = NULL ,@pFeladatKategoriaId INT ,@pAmiKategoriaId INT AS BEGIN SET NOCOUNT ON; IF @pDatum IS NULL SET @pDatum = CONVERT(DATE, GETDATE()) DECLARE @evfolyamTipusId INT SELECT TOP (1) @evfolyamTipusId = tanuloOsztaly.EvfolyamTipusId FROM fnGetTanuloOsztaly(@pTanuloId, @pDatum, @pFeladatKategoriaId, 0, DEFAULT) tanuloOsztaly ORDER BY tanuloOsztaly.BelepesDatuma DESC CREATE TABLE #KapcsopodoTantargyak ( ID INT ,C_FOTARGYID INT ,C_NEV NVARCHAR(255) ,C_TARGYKATEGORIA INT ,C_INTEZMENYID INT ,C_TANEVID INT ,C_ISTANULMANYIATLAGBANEMSZAMIT CHAR(1) ) INSERT INTO #KapcsopodoTantargyak SELECT ID ,C_FOTARGYID ,C_NEV ,C_TARGYKATEGORIA ,C_INTEZMENYID ,C_TANEVID ,C_ISTANULMANYIATLAGBANEMSZAMIT FROM fnGetKapcsolodoTantargyak(@pIntezmenyId, @pTanevId, @pFotargyAltargyId) CREATE TABLE #OsztalyCsoportIdList ( ID INT PRIMARY KEY ) INSERT INTO #OsztalyCsoportIdList ( ID ) SELECT OsztalyCsoport.ID FROM T_TANULOCSOPORT_OSSZES TanuloCsoport INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.C_INTEZMENYID = TanuloCsoport.C_INTEZMENYID AND OsztalyCsoport.C_TANEVID = TanuloCsoport.C_TANEVID AND OsztalyCsoport.TOROLT = 'F' AND OsztalyCsoport.ID = TanuloCsoport.C_OSZTALYCSOPORTID AND (OsztalyCsoport.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL) WHERE TanuloCsoport.C_INTEZMENYID = @pIntezmenyId AND TanuloCsoport.C_TANEVID = @pTanevId AND TanuloCsoport.TOROLT = 'F' AND TanuloCsoport.C_TANULOID = @pTanuloId AND TanuloCsoport.C_BELEPESDATUM <= @pDatum AND (TanuloCsoport.C_KILEPESDATUM > @pDatum OR TanuloCsoport.C_KILEPESDATUM IS NULL) CREATE TABLE #Tantargyak ( ID INT ,C_FOTARGYID INT ,C_NEV NVARCHAR(255) ,C_TARGYKATEGORIA INT ,C_INTEZMENYID INT ,C_TANEVID INT ,C_ISTANULMANYIATLAGBANEMSZAMIT CHAR(1) ); WITH tantargy_CTE (C_TANTARGYID, C_FOTARGYID, C_INTEZMENYID, C_TANEVID, C_ISTANULMANYIATLAGBANEMSZAMIT) AS ( SELECT DISTINCT Foglalkozas.C_TANTARGYID, Tantargy.C_FOTARGYID, Tantargy.C_INTEZMENYID, Tantargy.C_TANEVID, Tantargy.C_ISTANULMANYIATLAGBANEMSZAMIT FROM T_FOGLALKOZAS_OSSZES Foglalkozas INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_INTEZMENYID = Foglalkozas.C_INTEZMENYID AND Tantargy.C_TANEVID = Foglalkozas.C_TANEVID AND Tantargy.TOROLT = 'F' AND Tantargy.ID = Foglalkozas.C_TANTARGYID INNER JOIN #OsztalyCsoportIdList OsztalyCsoport ON OsztalyCsoport.ID = Foglalkozas.C_OSZTALYCSOPORTID WHERE Foglalkozas.C_INTEZMENYID = @pIntezmenyId AND Foglalkozas.C_TANEVID = @pTanevId AND Foglalkozas.TOROLT = 'F' UNION SELECT DISTINCT OrarendiOra.C_TANTARGYID, Tantargy.C_FOTARGYID, Tantargy.C_INTEZMENYID, Tantargy.C_TANEVID, Tantargy.C_ISTANULMANYIATLAGBANEMSZAMIT FROM T_ORARENDIORA_OSSZES OrarendiOra INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_INTEZMENYID = OrarendiOra.C_INTEZMENYID AND Tantargy.C_TANEVID = OrarendiOra.C_TANEVID AND Tantargy.TOROLT = 'F' AND Tantargy.ID = OrarendiOra.C_TANTARGYID INNER JOIN #OsztalyCsoportIdList OsztalyCsoport ON OsztalyCsoport.ID = OrarendiOra.C_OSZTALYCSOPORTID WHERE OrarendiOra.C_INTEZMENYID = @pIntezmenyId AND OrarendiOra.C_TANEVID = @pTanevId AND OrarendiOra.TOROLT = 'F' UNION SELECT DISTINCT TanuloErtekeles.C_TANTARGYID, Tantargy.C_FOTARGYID, Tantargy.C_INTEZMENYID, Tantargy.C_TANEVID, Tantargy.C_ISTANULMANYIATLAGBANEMSZAMIT FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID AND Tantargy.C_TANEVID = TanuloErtekeles.C_TANEVID AND Tantargy.TOROLT = 'F' AND Tantargy.ID = TanuloErtekeles.C_TANTARGYID INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.TOROLT = 'F' AND Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID AND TanuloCsoport.C_TANEVID = TanuloErtekeles.C_TANEVID AND TanuloCsoport.TOROLT = 'F' AND TanuloCsoport.C_OSZTALYCSOPORTID = Osztaly.ID AND TanuloCsoport.C_TANULOID = TanuloErtekeles.C_TANULOID AND TanuloCsoport.C_BELEPESDATUM <= @pDatum WHERE TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId AND TanuloErtekeles.C_TANEVID = @pTanevId AND TanuloErtekeles.TOROLT = 'F' AND TanuloErtekeles.C_TANULOID = @pTanuloId AND TanuloErtekeles.C_TANTARGYID IS NOT NULL UNION ALL SELECT DISTINCT TanuloErtekeles.C_TANTARGYID, Tantargy.C_FOTARGYID, Tantargy.C_INTEZMENYID, Tantargy.C_TANEVID, Tantargy.C_ISTANULMANYIATLAGBANEMSZAMIT FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID AND Tantargy.C_TANEVID = TanuloErtekeles.C_TANEVID AND Tantargy.TOROLT = 'F' AND Tantargy.ID = TanuloErtekeles.C_TANTARGYID WHERE TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId AND TanuloErtekeles.C_TANEVID = @pTanevId AND TanuloErtekeles.TOROLT = 'F' AND TanuloErtekeles.C_TANULOID = @pTanuloId AND TanuloErtekeles.C_TANTARGYID IS NOT NULL AND @pFeladatKategoriaId = @pAmiKategoriaId ) INSERT INTO #Tantargyak (ID, C_FOTARGYID, C_NEV, C_TARGYKATEGORIA, C_INTEZMENYID, C_TANEVID, C_ISTANULMANYIATLAGBANEMSZAMIT) SELECT DISTINCT KapcsopodoTantargy.ID, KapcsopodoTantargy.C_FOTARGYID, KapcsopodoTantargy.C_NEV, KapcsopodoTantargy.C_TARGYKATEGORIA, KapcsopodoTantargy.C_INTEZMENYID, KapcsopodoTantargy.C_TANEVID, KapcsopodoTantargy.C_ISTANULMANYIATLAGBANEMSZAMIT FROM tantargy_CTE INNER JOIN #KapcsopodoTantargyak KapcsopodoTantargy ON tantargy_CTE.C_TANTARGYID = KapcsopodoTantargy.ID OR tantargy_CTE.C_FOTARGYID = KapcsopodoTantargy.ID WHERE (KapcsopodoTantargy.ID <> @pFotargyAltargyId) --NOTE: Azért kell a DISTINCT, ha ugyanoda ki-/besorolgatják a tanulót! SELECT DISTINCT @pTanuloId TanuloId ,Tantargy.ID TantargyId ,Tantargy.C_NEV TantargyNev ,TanuloErtekeles.ID ID ,TanuloErtekeles.C_DATUM Datum ,TanuloErtekeles.C_ROGZITESDATUM RogzitesDatum ,TanuloErtekeles.C_TIPUSID TipusId ,FelhasznaloErtekelo.C_NYOMTATASINEV ErtekeloNyomtatasiNev ,IIF(TanuloErtekeles.ID IS NULL, NULL, CASE WHEN TanuloErtekeles.C_ERTEKELOID = @pTanarId THEN 'T' ELSE 'F' END ) Modosithato ,TanuloErtekeles.CREATED Created ,TanuloErtekeles.C_ISMAGATARTASSZORGALOM IsMagatartasSzorgalom ,TanuloErtekeles.C_ISERTESITESELKULDVE IsErtesitesElkuldve ,TanuloErtekeles.C_ERTEKELESOSZTALYZATID ErtekelesOsztalyzatId ,em.C_SULY Suly ,TanuloErtekeles.C_ERTEKELESSZOVEG ErtekelesSzoveg ,TanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV ErtekelesSzovegRovidNev ,TanuloErtekeles.C_ERTEKELESSZAZALEK ErtekelesSzazalek ,TanuloErtekeles.C_ERTEKELESMODID ErtekelesModId ,TanuloErtekeles.C_ERTEKELESTEMA ErtekelesTema ,Tantargy.C_TARGYKATEGORIA TantargyKategoriaId ,Fotargy.ID FotargyId ,Fotargy.C_NEV FotargyNev ,Fotargy.C_TARGYKATEGORIA FotargyTantargyKategoriaId ,Tantargy.C_ISTANULMANYIATLAGBANEMSZAMIT IsTanulmanyiAtlagbaNemSzamit FROM #Tantargyak Tantargy LEFT JOIN( SELECT TanuloErtekeles.* FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.TOROLT = 'F' AND Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId AND Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_TANEVID = TanuloErtekeles.C_TANEVID AND TanuloCsoport.TOROLT = 'F' AND TanuloCsoport.C_OSZTALYCSOPORTID = Osztaly.ID AND TanuloCsoport.C_TANULOID = TanuloErtekeles.C_TANULOID AND TanuloCsoport.C_BELEPESDATUM <= @pDatum WHERE TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId AND TanuloErtekeles.C_TANEVID = @pTanevId AND TanuloErtekeles.TOROLT = 'F' AND TanuloErtekeles.C_TANULOID = @pTanuloId AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NOT NULL AND TanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'F' UNION ALL SELECT TanuloErtekeles.* FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.TOROLT = 'F' AND Osztaly.ID = TanuloErtekeles.C_OSZTALYCSOPORTID AND Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId WHERE TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId AND TanuloErtekeles.C_TANEVID = @pTanevId AND TanuloErtekeles.TOROLT = 'F' AND TanuloErtekeles.C_TANULOID = @pTanuloId AND @pFeladatKategoriaId = @pAmiKategoriaId AND TanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'F' ) AS TanuloErtekeles ON TanuloErtekeles.C_TANTARGYID = Tantargy.ID LEFT JOIN T_FELHASZNALO_OSSZES FelhasznaloErtekelo ON FelhasznaloErtekelo.C_INTEZMENYID = Tantargy.C_INTEZMENYID AND FelhasznaloErtekelo.C_TANEVID = Tantargy.C_TANEVID AND FelhasznaloErtekelo.TOROLT = 'F' AND FelhasznaloErtekelo.ID = TanuloErtekeles.C_ERTEKELOID LEFT JOIN T_ERTEKELESMOD_OSSZES em ON em.C_ALINTEZMENYID = Tantargy.C_INTEZMENYID AND em.C_ALTANEVID = Tantargy.C_TANEVID AND em.TOROLT = 'F' AND em.ID = TanuloErtekeles.C_ERTEKELESMODID AND TanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'F' AND TanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL LEFT JOIN T_TANTARGY_OSSZES Fotargy ON Fotargy.C_INTEZMENYID = Tantargy.C_INTEZMENYID AND Fotargy.C_TANEVID = Tantargy.C_TANEVID AND Fotargy.TOROLT = 'F' AND Fotargy.ID = Tantargy.C_FOTARGYID END GO