DROP PROCEDURE IF EXISTS dbo.uspGetEntitySzervezetList GO CREATE PROCEDURE dbo.uspGetEntitySzervezetList( @pEntityId int ,@pEntityName nvarchar(250) ) AS BEGIN SET NOCOUNT ON; DECLARE @lekerdezesDatuma datetime = GETDATE() -- Védelem arra az esetre ha feltünne az adatbázisban egy újabb tábla C_SZERVEZETID oszloppal. DECLARE @missing_table nvarchar(100); SELECT TOP 1 @missing_table = N'Kezeletlen tábla: ' + t.name FROM sys.tables t INNER JOIN sys.columns c on c.object_id = t.object_id WHERE c.name = 'C_SZERVEZETID' AND t.name NOT IN ('T_MUNKAUGYIADATOK', 'T_TANULOTANUGYIADATOK', 'T_TEREM', 'T_CSOPORT', 'T_TANTARGY','T_SZAKMUNKASZERZODES','T_IGAZOLAS') IF @missing_table IS NOT NULL THROW 50000, @missing_table, 1; -- ebbe a táblába gyűjtjük a találatokat CREATE TABLE #Result( EntitasNev sysname, SzervezetId int, Cnt int ) IF @pEntityName IN ('T_TANULO') BEGIN INSERT INTO #Result(EntitasNev, SzervezetId, Cnt) SELECT 'T_CSOPORT' as EntitasNev, cs.C_SZERVEZETID AS SzervezetId, COUNT(1) AS Cnt FROM T_TANULOCSOPORT_OSSZES tcs INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = tcs.C_OSZTALYCSOPORTID AND cs.TOROLT = 'F' WHERE tcs.C_TANULOID = @pEntityId AND tcs.TOROLT = 'F' AND tcs.C_BELEPESDATUM <= @lekerdezesDatuma AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > @lekerdezesDatuma) AND cs.C_SZERVEZETID IS NOT NULL GROUP BY cs.C_SZERVEZETID INSERT INTO #Result(EntitasNev, SzervezetId, Cnt) SELECT 'T_TANTARGY' AS EntitasNev ,tt.C_SZERVEZETID AS SzervezetId ,COUNT(1) AS Cnt FROM T_TANULOCSOPORT_OSSZES tcs INNER JOIN T_ORARENDIORA_OSSZES oo ON oo.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID AND oo.TOROLT = 'F' INNER JOIN T_TANTARGY_OSSZES tt ON tt.ID = oo.C_TANTARGYID AND tt.TOROLT = 'F' WHERE tcs.C_TANULOID = @pEntityId AND tcs.TOROLT = 'F' AND tcs.C_BELEPESDATUM <= @lekerdezesDatuma AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > @lekerdezesDatuma) AND tt.C_SZERVEZETID IS NOT NULL GROUP BY tt.C_SZERVEZETID INSERT INTO #Result(EntitasNev, SzervezetId, Cnt) SELECT 'T_TEREM' AS EntitasNev ,t.C_SZERVEZETID AS SzervezetId ,COUNT(1) AS Cnt FROM T_TANULOCSOPORT_OSSZES tcs INNER JOIN T_ORARENDIORA_OSSZES oo ON oo.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID AND oo.TOROLT = 'F' INNER JOIN T_TEREM_OSSZES t ON t.ID = oo.C_TEREMID AND t.TOROLT = 'F' WHERE tcs.C_TANULOID = @pEntityId AND tcs.TOROLT = 'F' AND tcs.C_BELEPESDATUM <= @lekerdezesDatuma AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > @lekerdezesDatuma) AND t.C_SZERVEZETID IS NOT NULL GROUP BY t.C_SZERVEZETID INSERT INTO #Result(EntitasNev, SzervezetId, Cnt) SELECT 'T_TANULOTANUGYIADATOK' AS EntitasNev ,ta.C_SZERVEZETID AS SzervezetId ,COUNT(1) AS Cnt FROM T_TANULOCSOPORT_OSSZES tcs INNER JOIN T_TANULOTANUGYIADATOK_OSSZES ta ON ta.C_TANULOCSOPORTID = tcs.ID AND ta.TOROLT = 'F' WHERE tcs.C_TANULOID = @pEntityId AND tcs.TOROLT = 'F' AND ta.C_SZERVEZETID IS NOT NULL GROUP BY ta.C_SZERVEZETID END IF @pEntityName IN ('T_ALKALMAZOTT') BEGIN INSERT INTO #Result(EntitasNev, SzervezetId, Cnt) SELECT 'T_MUNKAUGYIADATOK' AS EntitasNev ,m.C_SZERVEZETID AS SzervezetId ,COUNT(1) AS Cnt FROM T_MUNKAUGYIADATOK_OSSZES m WHERE m.C_ALKALMAZOTTID = @pEntityId AND m.TOROLT = 'F' AND m.C_SZERVEZETID IS NOT NULL GROUP BY m.C_SZERVEZETID INSERT INTO #Result(EntitasNev, SzervezetId, Cnt) SELECT 'T_TEREM' AS EntitasNev ,t.C_SZERVEZETID AS SzervezetId ,COUNT(1) AS Cnt FROM T_ORARENDIORA_OSSZES oo INNER JOIN T_TEREM_OSSZES t ON t.ID = oo.C_TEREMID AND t.TOROLT = 'F' WHERE oo.C_TANARID = @pEntityId AND oo.TOROLT = 'F' AND t.C_SZERVEZETID IS NOT NULL GROUP BY t.C_SZERVEZETID INSERT INTO #Result(EntitasNev, SzervezetId, Cnt) SELECT 'T_TANTARGY' AS EntitasNev ,tt.C_SZERVEZETID AS SzervezetId ,COUNT(1) AS Cnt FROM T_ORARENDIORA_OSSZES oo INNER JOIN T_TANTARGY_OSSZES tt ON tt.ID = oo.C_TANTARGYID AND tt.TOROLT = 'F' WHERE oo.C_TANARID = @pEntityId AND oo.TOROLT = 'F' AND tt.C_SZERVEZETID IS NOT NULL GROUP BY tt.C_SZERVEZETID END -- csak visszaadjuk az eredményt SELECT * FROM #Result END GO