57 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
DROP PROCEDURE IF EXISTS dbo.uspGetFelhasznaloOsztalyaiByFoglalkozasAndOsztfo
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE dbo.uspGetFelhasznaloOsztalyaiByFoglalkozasAndOsztfo
 | 
						|
	@pFelhasznaloId INT,
 | 
						|
	@pOsztalyGroupName VARCHAR(32),
 | 
						|
	@pCsoportGroupName VARCHAR(32)
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
	-- SET NOCOUNT ON added to prevent extra result sets from
 | 
						|
	-- interfering with SELECT statements.
 | 
						|
	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 foglalkozas
 | 
						|
		INNER JOIN T_OSZTALYCSOPORT osztalyCsoport
 | 
						|
			ON osztalyCsoport.ID = foglalkozas.C_OSZTALYCSOPORTID
 | 
						|
		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 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	
 | 
						|
	-- 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 OsztalyCsoport
 | 
						|
	INNER JOIN T_OSZTALY 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
 | 
						|
	
 | 
						|
	SELECT DISTINCT
 | 
						|
	* 
 | 
						|
	FROM @Osztalyok
 | 
						|
	ORDER BY Tipus DESC, NumberOrder ASC, NumberAndTextOrder ASC, Nev ASC	
 | 
						|
END
 |