DROP PROCEDURE IF EXISTS dbo.uspGetFelhasznaloOsztalyaiByFoglalkozasAndOsztfo GO CREATE PROCEDURE dbo.uspGetFelhasznaloOsztalyaiByFoglalkozasAndOsztfo @pTanevId INT ,@pIntezmenyId INT ,@pFelhasznaloId INT ,@pOsztalyGroupName VARCHAR(32) ,@pCsoportGroupName VARCHAR(32) ,@pIsKellCsoportVezeto BIT = 0 AS BEGIN SET NOCOUNT ON; DECLARE @Osztalyok TABLE (NumberOrder int,NumberAndTextOrder int, ID int, Nev VARCHAR(255),Tipus VARCHAR(255),Evfolyam VARCHAR(255)) -- insert TFF-re filterelve INSERT INTO @Osztalyok(NumberOrder,NumberAndTextOrder,ID,Nev,Tipus,Evfolyam) SELECT DISTINCT CASE WHEN osztalyCsoport.C_NEV NOT LIKE '%[^0-9]%' THEN CAST(LEFT(osztalyCsoport.C_NEV,9) AS INT) ELSE 2147483647 END NumberOrder, CASE WHEN LEFT(osztalyCsoport.C_NEV, 1) BETWEEN '0' AND '9' AND osztalyCsoport.C_NEV LIKE '%[^0-9]%' THEN CAST(LEFT(SUBSTRING(osztalyCsoport.C_NEV, 1, PATINDEX('%[^0-9]%', osztalyCsoport.C_NEV) - 1),9) AS INT) ELSE 2147483647 END NumberAndTextOrder, osztalyCsoport.ID ID, osztalyCsoport.C_NEV Nev, CASE WHEN o.ID IS NOT NULL THEN @pOsztalyGroupName ELSE @pCsoportGroupName END Tipus, osztalyCsoport.C_EVFOLYAMTIPUSA Evfolyam FROM T_FOGLALKOZAS_OSSZES foglalkozas INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON osztalyCsoport.ID = foglalkozas.C_OSZTALYCSOPORTID AND osztalyCsoport.TOROLT = 'F' LEFT JOIN T_TANTARGY_OSSZES tantargy ON tantargy.ID = foglalkozas.C_TANTARGYID AND tantargy.TOROLT = 'F' LEFT JOIN T_FELHASZNALO_OSSZES felhasznalo ON felhasznalo.ID = foglalkozas.C_TANARID AND felhasznalo.TOROLT = 'F' LEFT JOIN (SELECT ID, 'T' AS Osztaly FROM T_OSZTALY_OSSZES WHERE TOROLT = 'F') AS o ON o.ID = osztalyCsoport.ID LEFT JOIN (SELECT ID, C_TIPUSA FROM T_CSOPORT_OSSZES WHERE TOROLT = 'F') AS cs ON cs.ID = osztalyCsoport.ID WHERE foglalkozas.TOROLT = 'F' AND foglalkozas.C_TANARID = @pFelhasznaloId AND foglalkozas.C_TANEVID = @pTanevId AND foglalkozas.C_INTEZMENYID = @pIntezmenyId -- insert Osztfo-re filterelve amelyeket meg nem tartalmazza a lista INSERT INTO @Osztalyok(NumberOrder,NumberAndTextOrder,ID,Nev,Tipus,Evfolyam) SELECT DISTINCT CASE WHEN OsztalyCsoport.C_NEV NOT LIKE '%[^0-9]%' THEN CAST(LEFT(OsztalyCsoport.C_NEV,9) AS INT) ELSE 2147483647 END AS NumberOrder, CASE WHEN LEFT(OsztalyCsoport.C_NEV, 1) BETWEEN '0' AND '9' AND OsztalyCsoport.C_NEV LIKE '%[^0-9]%' THEN CAST(LEFT(SUBSTRING(OsztalyCsoport.C_NEV, 1, PATINDEX('%[^0-9]%', OsztalyCsoport.C_NEV) - 1),9) AS INT) ELSE 2147483647 END AS NumberAndTextOrder, OsztalyCsoport.ID AS ID, OsztalyCsoport.C_NEV AS Nev, @pOsztalyGroupName AS Tipus, OsztalyCsoport.C_EVFOLYAMTIPUSA AS Evfolyam FROM T_OSZTALYCSOPORT_OSSZES OsztalyCsoport INNER JOIN T_OSZTALY_OSSZES osztaly ON OsztalyCsoport.ID = osztaly.ID AND (osztaly.C_OFOHELYETTESID = @pFelhasznaloId OR osztaly.C_OSZTALYFONOKID = @pFelhasznaloId) AND osztaly.TOROLT = 'F' LEFT JOIN @Osztalyok TTFosztalyok on TTFosztalyok.ID = OsztalyCsoport.ID WHERE OsztalyCsoport.TOROLT = 'F' AND TTFosztalyok.ID IS NULL AND OsztalyCsoport.C_TANEVID = @pTanevId AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId -- insert CsopVez-re filterelve amelyeket meg nem tartalmazza a lista IF @pIsKellCsoportVezeto = 1 BEGIN INSERT INTO @Osztalyok(NumberOrder,NumberAndTextOrder,ID,Nev,Tipus,Evfolyam) SELECT DISTINCT CASE WHEN OsztalyCsoport.C_NEV NOT LIKE '%[^0-9]%' THEN CAST(LEFT(OsztalyCsoport.C_NEV,9) AS INT) ELSE 2147483647 END AS NumberOrder, CASE WHEN LEFT(OsztalyCsoport.C_NEV, 1) BETWEEN '0' AND '9' AND OsztalyCsoport.C_NEV LIKE '%[^0-9]%' THEN CAST(LEFT(SUBSTRING(OsztalyCsoport.C_NEV, 1, PATINDEX('%[^0-9]%', OsztalyCsoport.C_NEV) - 1),9) AS INT) ELSE 2147483647 END AS NumberAndTextOrder, OsztalyCsoport.ID AS ID, OsztalyCsoport.C_NEV AS Nev, @pCsoportGroupName AS Tipus, OsztalyCsoport.C_EVFOLYAMTIPUSA AS Evfolyam FROM T_OSZTALYCSOPORT_OSSZES OsztalyCsoport INNER JOIN T_CSOPORT_OSSZES csoport ON OsztalyCsoport.ID = csoport.ID AND csoport.C_CSOPORTVEZETOID = @pFelhasznaloId AND csoport.TOROLT = 'F' LEFT JOIN @Osztalyok OfoOsztalyok on OfoOsztalyok.ID = OsztalyCsoport.ID WHERE OsztalyCsoport.TOROLT = 'F' AND OfoOsztalyok.ID IS NULL AND OsztalyCsoport.C_TANEVID = @pTanevId AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId END SELECT DISTINCT * FROM @Osztalyok ORDER BY Tipus DESC, NumberOrder ASC, NumberAndTextOrder ASC, Nev ASC END GO