-- ============================================= -- Description: -- ============================================= DROP PROCEDURE IF EXISTS [dbo].[sp_GetFelhasznaloOsztalyaiByFoglalkozas] GO CREATE PROCEDURE [dbo].[sp_GetFelhasznaloOsztalyaiByFoglalkozas] @felhasznaloId INT ,@osztaly VARCHAR(32) ,@csoport VARCHAR(32) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; 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 ,CASE WHEN Osztaly IS NOT NULL THEN @osztaly ELSE @csoport END AS Tipus ,osztalyCsoport.C_EVFOLYAMTIPUSA AS Evfolyam ,feladatellatasiHely.C_OKTATASINEVELESIFELADATTIPUS AS EllatottFeladatTipusId ,csoport.C_TIPUSA AS CsoportTipusId FROM T_FOGLALKOZAS foglalkozas LEFT JOIN T_OSZTALYCSOPORT osztalyCsoport ON osztalyCsoport.ID = foglalkozas.C_OSZTALYCSOPORTID LEFT JOIN T_CSOPORT csoport ON csoport.ID = foglalkozas.C_OSZTALYCSOPORTID AND csoport.TOROLT = 'F' LEFT JOIN T_TANTARGY tantargy ON tantargy.ID = foglalkozas.C_TANTARGYID LEFT JOIN T_FELHASZNALO felhasznalo ON felhasznalo.ID = foglalkozas.C_TANARID LEFT JOIN (SELECT ID, 'T' AS Osztaly FROM T_OSZTALY_OSSZES) 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 INNER JOIN T_FELADATELLATASIHELY feladatellatasiHely ON osztalyCsoport.C_FELADATELLATASIHELYID = feladatellatasiHely.ID WHERE foglalkozas.TOROLT = 'F' AND foglalkozas.C_TANARID = @felhasznaloId ORDER BY NumberOrder ASC, NumberAndTextOrder ASC, osztalyCsoport.C_NEV ASC END GO