140 lines
No EOL
4.4 KiB
Transact-SQL
140 lines
No EOL
4.4 KiB
Transact-SQL
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 |