kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Stored procedures/uspGetTanarNemTanitottTanuloi.sql
2024-03-13 00:33:46 +01:00

78 lines
2.3 KiB
Transact-SQL

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