GO
/****** Object:  StoredProcedure [dbo].[sp_GetOsztalyokTanuloi]    Script Date: 2016.03.22. 9:41:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Kelemen Attila>
-- Create date: <2016. 01. 08.>
-- Description:	<Tanulók adatai osztályonként (minden osztály külön tábla)>
-- =============================================
CREATE PROCEDURE [dbo].[sp_GetOsztalyokTanuloi]
	@intezmenyId int,
	@tanevID int
AS
BEGIN
DECLARE @osztalyID  INT = 0
DECLARE @osztalyNev VARCHAR(255)

	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	--Osztályok nevei
	SELECT T_OSZTALY_OSSZES.ID,
		   T_OSZTALYCSOPORT_OSSZES.C_NEV osztalyNev 
	INTO #Osztalyok
	FROM T_OSZTALY_OSSZES
		inner join T_OSZTALYCSOPORT_OSSZES on T_OSZTALY_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.ID and T_OSZTALYCSOPORT_OSSZES.C_INTEZMENYID=@intezmenyId
		inner join T_TANEV_OSSZES on T_TANEV_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID and T_TANEV_OSSZES.TOROLT = 'F' and T_TANEV_OSSZES.C_INTEZMENYID=@intezmenyId
	WHERE T_OSZTALY_OSSZES.TOROLT='F' and
		  T_TANEV_OSSZES.ID = @tanevID and 
		  T_TANEV_OSSZES.C_INTEZMENYID= @IntezmenyId
	ORDER BY T_OSZTALY_OSSZES.ID
	
	--Az többi tábla osztálynevek szerinti elnevezéséhez kell
	SELECT * FROM #Osztalyok

WHILE (1 = 1) 
	BEGIN
		SELECT TOP 1 @osztalyID=ID, @osztalyNev = osztalyNev FROM #Osztalyok Jegyek WHERE ID > @osztalyID ORDER BY ID
		IF @@ROWCOUNT = 0 
		BEGIN
			BREAK;
		END
		--A WHILE CIKLUS MIDEN LÉPÉSÉBEN VISSZAAD EGY TÁBLÁT
		SELECT distinct
			C_NYOMTATASINEV TanuloNev,
			C_OKTATASIAZONOSITO Azonosito,
			C_NEME Neme,
			C_SZULETESINEV SzuletesiNev,
			C_SZULETESIHELY SzuletesiHely,
			C_SZULETESIDATUM SzuletesiDatum,
			C_ANYJANEVE AnyjaNeve,
			C_ALLAMPOLGARSAGA Allampolgarsag,
			TanuloCim.Elerhetoseg1 TanuloElerhetoseg1,
			TanuloCim.Orszag1 TanuloOrszag1,
			TanuloCim.Iranyitoszam1 TanuloIranyitoszam1,
			TanuloCim.Varos1 TanuloVaros1,
			TanuloCim.Kozterulet1 TanuloKozterulet1,
			TanuloCim.KozteruletJellege1 TanuloKozteruletJellege1,
			TanuloCim.Hazszam1 TanuloHazszam1,
			TanuloCim.Emelet1 TanuloEmelet1,
			TanuloCim.Ajto1 TanuloAjto1,
			T_TELEFON_OSSZES.C_TELEFONSZAM Telefonszam1,

			GondviseloCim.Elerhetoseg1 GondviseloElerhetoseg1,
			GondviseloCim.Orszag1 GondviseloOrszag1,
			GondviseloCim.Iranyitoszam1 GondviseloIranyitoszam1,
			GondviseloCim.Varos1 GondviseloVaros1,
			GondviseloCim.Kozterulet1 GondviseloKozterulet1,
			GondviseloCim.KozteruletJellege1 GondviseloKozteruletJellege1,
			GondviseloCim.Hazszam1 GondviseloHazszam1,
			GondviseloCim.Emelet1 GondviseloEmelet1,
			GondviseloCim.Ajto1 GondviseloAjto1,

			T_FELHASZNALO_OSSZES.C_IGAZOLVANYSZAM IgazolvanySzam,
			T_FELHASZNALO_OSSZES.C_TAJSZAM TAJSzam,
			T_FELHASZNALO_OSSZES.C_ADOSZAM Adoszam,
			T_FELHASZNALO_OSSZES.C_NYILVANTARTASISZAM Torzslapszam,
			T_TANULO_OSSZES.C_DIAKIGAZOLVANYSZAM DiakigazolvanySzam,
			T_FELHASZNALO_OSSZES.C_NYILVANTARTASKEZDETE NyilvantartasKezdete,
			T_TANULO_OSSZES.C_MAGANTANULO Magantanulo,
			T_TANULO_OSSZES.C_BEJARO Bejaro,
			T_TANULO_OSSZES.C_ELOZOINTEZMENY ElozoIntezmeny,
			ElsoTanev.Nev FelvetelTaneve,
			T_OSZTALYCSOPORT_OSSZES.C_NEV Osztaly,
			ElsoTanev.ElsoNap BelepesIdopontja,
			--Kilepes idopontja
			--Tanév: paraméterben kapott tanév neve
			T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA Evfolyam,
			T_TANTERV_OSSZES.c_nev,
			Osztalyfonok.Nev

		from T_FELHASZNALO_OSSZES

		--Ha egy tanulóhoz több cím van hozzárendelve, a legkisebb ID-vel rendelkezőt adja vissza
		JOIN (select * from

		(select MIN(T_CIM_OSSZES.ID) CimID, T_CIM_OSSZES.C_FELHASZNALOID TanuloID FROM
				T_CIM_OSSZES	
				WHERE T_CIM_OSSZES.TOROLT='F'
				GROUP BY T_CIM_OSSZES.C_FELHASZNALOID) CimID

			inner join 

		(select
			T_CIM_OSSZES.ID,
			T_CIM_OSSZES.C_FELHASZNALOID TanuloIDx,
			T_CIM_OSSZES.C_CIMTIPUSA Elerhetoseg1,
			T_CIM_OSSZES.C_ORSZAG Orszag1,
			T_CIM_OSSZES.C_IRANYITOSZAM IranyitoSzam1,
			T_CIM_OSSZES.C_VAROS Varos1,
			T_CIM_OSSZES.C_KOZTERULET Kozterulet1,
			T_CIM_OSSZES.C_KOZTERULETJELLEGE KozteruletJellege1,
			T_CIM_OSSZES.C_HAZSZAM Hazszam1,
			T_CIM_OSSZES.C_EMELET Emelet1,
			T_CIM_OSSZES.C_AJTO Ajto1
			from T_CIM_OSSZES
			) CimAdat ON CimID.CimID = CimAdat.ID) TanuloCim on T_FELHASZNALO_OSSZES.ID = TanuloCim.TanuloID

		INNER JOIN T_TANULOCSOPORT_OSSZES ON T_FELHASZNALO_OSSZES.ID = T_TANULOCSOPORT_OSSZES.C_TANULOID
		INNER JOIN T_OSZTALYCSOPORT_OSSZES ON T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID=T_OSZTALYCSOPORT_OSSZES.ID
		INNER JOIN T_OSZTALY_OSSZES ON T_OSZTALYCSOPORT_OSSZES.ID = T_OSZTALY_OSSZES.ID
		LEFT JOIN T_TELEFON_OSSZES ON T_FELHASZNALO_OSSZES.ID = T_TELEFON_OSSZES.C_FELHASZNALOID
		INNER JOIN T_FELHASZNALOBELEPES_OSSZES ON T_FELHASZNALO_OSSZES.ID = T_FELHASZNALOBELEPES_OSSZES.C_FELHASZNALOID
		LEFT JOIN T_GONDVISELO_OSSZES ON T_FELHASZNALOBELEPES_OSSZES.C_GONDVISELOID = T_GONDVISELO_OSSZES.ID

		--Ha egy gondviselőhöz több cím van hozzárendelve, a legkisebb ID-vel rendelkezőt adja vissza
		left JOIN ( select * from 
		(select MIN(T_CIM_OSSZES.ID) CimID, T_CIM_OSSZES.C_FELHASZNALOID GondvisID FROM
				T_CIM_OSSZES	
				WHERE T_CIM_OSSZES.TOROLT='F'
				GROUP BY T_CIM_OSSZES.C_FELHASZNALOID) CimID

			inner join 
			(select
				T_CIM_OSSZES.ID,
				T_CIM_OSSZES.C_FELHASZNALOID GondviseloID,
				T_CIM_OSSZES.C_CIMTIPUSA Elerhetoseg1,
				T_CIM_OSSZES.C_ORSZAG Orszag1,
				T_CIM_OSSZES.C_IRANYITOSZAM IranyitoSzam1,
				T_CIM_OSSZES.C_VAROS Varos1,
				T_CIM_OSSZES.C_KOZTERULET Kozterulet1,
				T_CIM_OSSZES.C_KOZTERULETJELLEGE KozteruletJellege1,
				T_CIM_OSSZES.C_HAZSZAM Hazszam1,
				T_CIM_OSSZES.C_EMELET Emelet1,
				T_CIM_OSSZES.C_AJTO Ajto1
			 FROM 
			T_CIM_OSSZES
			) CimAdat ON CimID.CimID = CimAdat.ID) GondviseloCim on T_GONDVISELO_OSSZES.ID = GondviseloCim.GondviseloID

		INNER JOIN T_TANULO_OSSZES ON T_FELHASZNALO_OSSZES.ID = T_TANULO_OSSZES.ID
		INNER JOIN
			(SELECT T_TANEV_OSSZES.ID, T_TANEV_OSSZES.C_NEV Nev, T_TANEV_OSSZES.C_ELSOTANITASINAP ElsoNap
			 FROM T_TANEV_OSSZES) ElsoTanev
				 ON T_TANULO_OSSZES.C_FELVETELTANEVEID = ElsoTanev.ID

		LEFT JOIN T_TANTERV_OSSZES on T_OSZTALY_OSSZES.C_TANTERVID = t_tanterv_OSSZES.id
		INNER JOIN (SELECT ID, C_NYOMTATASINEV Nev FROM T_FELHASZNALO_OSSZES) Osztalyfonok ON T_OSZTALY_OSSZES.C_OSZTALYFONOKID = Osztalyfonok.ID
		WHERE T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = @osztalyID
		AND T_TANULOCSOPORT_OSSZES.TOROLT = 'F'
		AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
		AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())
		AND T_FELHASZNALO_OSSZES.TOROLT='F'
		AND T_OSZTALY_OSSZES.TOROLT='F'
		AND T_OSZTALYCSOPORT_OSSZES.TOROLT='F'
		AND T_TANULOCSOPORT_OSSZES.C_INTEZMENYID=@intezmenyId
		AND T_OSZTALY_OSSZES.C_ALINTEZMENYID=@intezmenyId
		--AND GondviseloCim.ID is not null
	END
DROP TABLE #Osztalyok
END 
GO