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: -- Create date: <2016. 01. 08.> -- Description: -- ============================================= 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