GO /****** Object: StoredProcedure [dbo].[sp_GetNaploEllenorzesTetelek] Script Date: 2016.03.29. 9:17:20 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF OBJECT_ID('[DBO].[sp_GetNaploEllenorzesTetelek]') IS NOT NULL BEGIN DROP PROCEDURE [DBO].[sp_GetNaploEllenorzesTetelek] END GO -- ============================================= -- Author: Kelemen Attila -- Create date: 2016.03.21. -- Description: Naplóellenőrzés tételei -- ============================================= CREATE PROCEDURE [dbo].[sp_GetNaploEllenorzesTetelek] @osztalyId int, @hetSorszam int AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; select * from ( --Órarendi órák, amikhez nem tartozik tanóra select T_ORARENDIORA.ID Id, naptar.C_HETSORSZAMA HetSzama, naptar.C_NAPDATUMA Datum, naptar.C_HETNAPJA Hetnapja, T_ORARENDIORA.C_ORASZAM Oraszam, osztaly.C_NEV OsztalyNev, T_TANTARGY.C_NEV TargyNev, --Ha van helyettesítő, akkor annak a nevére van szükségünk (select top 1 tanar.C_NYOMTATASINEV from T_FELHASZNALO tanar where ((T_TANITASIORA.C_HELYETTESITOTANARID IS null and T_FOGLALKOZAS.C_TANARID = tanar.ID) OR (T_TANITASIORA.C_HELYETTESITOTANARID IS not null and T_TANITASIORA.C_HELYETTESITOTANARID= tanar.ID))) TanarNev FROM T_ORARENDIORA inner join T_FOGLALKOZAS on T_FOGLALKOZAS.ID= T_ORARENDIORA.C_FOGLALKOZASID AND T_FOGLALKOZAS.TOROLT='F' left join T_TANTARGY on T_TANTARGY.ID= T_FOGLALKOZAS.C_TANTARGYID inner join T_NAPTARINAP naptar on (( CONVERT(date,naptar.C_NAPDATUMA) BETWEEN CONVERT(date,T_ORARENDIORA.C_ORAERVENYESSEGKEZDETE) AND CONVERT(date,T_ORARENDIORA.C_ORAERVENYESSEGVEGE)) AND (naptar.C_HETIREND = T_ORARENDIORA.C_HETIREND OR T_ORARENDIORA.C_HETIREND = 1554 AND naptar.C_HETNAPJA = T_ORARENDIORA.C_HETNAPJA) ) LEFT JOIN T_TANITASIORA ON (T_TANITASIORA.C_ORARENDIORAID = T_ORARENDIORA.ID AND T_TANITASIORA.TOROLT='F' AND naptar.C_NAPDATUMA = T_TANITASIORA.C_DATUM --AND T_TANITASIORA.C_MEGTARTOTT IS NULL ) inner join T_OSZTALYCSOPORT osztaly on T_FOGLALKOZAS.C_OSZTALYCSOPORTID = osztaly.ID AND osztaly.TOROLT='F' --Az osztályhoz kapcsolódó csoportok óráit is listázzuk left join (Select OsztalyID, CsoportID from (select C_OSZTALYCSOPORTID OsztalyID, C_TANULOID TanuloID from T_TANULOCSOPORT INNER JOIN T_OSZTALY ON T_TANULOCSOPORT.C_OSZTALYCSOPORTID = T_OSZTALY.ID WHERE T_TANULOCSOPORT.TOROLT='F' and T_TANULOCSOPORT.C_BELEPESDATUM < GETDATE() and (T_TANULOCSOPORT.C_KILEPESDATUM is null or T_TANULOCSOPORT.C_KILEPESDATUM >= GETDATE())) OsztalyTanuloi INNER JOIN (SELECT T_CSOPORT.ID CsoportID, C_TANULOID TanuloID FROM T_TANULOCSOPORT INNER JOIN T_CSOPORT ON T_TANULOCSOPORT.ID=T_CSOPORT.ID WHERE T_CSOPORT.TOROLT='F' AND T_TANULOCSOPORT.TOROLT='F' and T_TANULOCSOPORT.C_BELEPESDATUM < GETDATE() and (T_TANULOCSOPORT.C_KILEPESDATUM is null or T_TANULOCSOPORT.C_KILEPESDATUM >= GETDATE()) ) Csoportok ON OsztalyTanuloi.TanuloID = Csoportok.TanuloID) KapcsolodoCsoportok ON KapcsolodoCsoportok.OsztalyID = @osztalyId where T_ORARENDIORA.TOROLT='F' AND naptar.TOROLT = 'F' AND GETDATE() >= naptar.C_NAPDATUMA AND T_TANITASIORA.ID IS NULL AND (osztaly.ID = @osztalyId OR osztaly.ID = KapcsolodoCsoportok.CsoportID) and naptar.C_HETSORSZAMA = @hetSorszam UNION ALL --Tanítási órák, amikhez nem tartozik órarendi óra select T_TANITASIORA.ID Id, naptar.C_HETSORSZAMA HetSzama, naptar.C_NAPDATUMA Datum, naptar.C_HETNAPJA Hetnapja, T_TANITASIORA.C_ORASZAM Oraszam, osztaly.C_NEV OsztalyNev, T_TANTARGY.C_NEV TargyNev, tanar.C_NYOMTATASINEV TanarNev from T_TANITASIORA inner join T_NAPTARINAP naptar on (T_TANITASIORA.C_DATUM = naptar.C_NAPDATUMA) inner join T_FOGLALKOZAS on T_FOGLALKOZAS.ID= T_TANITASIORA.C_FOGLALKOZASID left join T_OSZTALYCSOPORT osztaly on T_FOGLALKOZAS.C_OSZTALYCSOPORTID = osztaly.ID left join T_TANTARGY on T_TANTARGY.ID= T_FOGLALKOZAS.C_TANTARGYID left join T_FELHASZNALO tanar on --Ha van helyettesítő, akkor aszerint joinolunk (case when T_TANITASIORA.C_HELYETTESITOTANARID IS not null then T_TANITASIORA.C_HELYETTESITOTANARID else T_FOGLALKOZAS.C_TANARID end) = tanar.ID left join (Select OsztalyID, CsoportID from (select C_OSZTALYCSOPORTID OsztalyID, C_TANULOID TanuloID from T_TANULOCSOPORT INNER JOIN T_OSZTALY ON T_TANULOCSOPORT.C_OSZTALYCSOPORTID = T_OSZTALY.ID WHERE T_TANULOCSOPORT.TOROLT='F' and T_TANULOCSOPORT.C_BELEPESDATUM < GETDATE() and (T_TANULOCSOPORT.C_KILEPESDATUM is null or T_TANULOCSOPORT.C_KILEPESDATUM >= GETDATE())) OsztalyTanuloi INNER JOIN (SELECT T_CSOPORT.ID CsoportID, C_TANULOID TanuloID FROM T_TANULOCSOPORT INNER JOIN T_CSOPORT ON T_TANULOCSOPORT.ID=T_CSOPORT.ID WHERE T_CSOPORT.TOROLT='F' AND T_TANULOCSOPORT.TOROLT='F' and T_TANULOCSOPORT.C_BELEPESDATUM < GETDATE() and (T_TANULOCSOPORT.C_KILEPESDATUM is null or T_TANULOCSOPORT.C_KILEPESDATUM >= GETDATE()) ) Csoportok ON OsztalyTanuloi.TanuloID = Csoportok.TanuloID) KapcsolodoCsoportok ON KapcsolodoCsoportok.OsztalyID = @osztalyId where T_TANITASIORA.C_ORARENDIORAID is null AND T_TANITASIORA.C_MEGTARTOTT is null AND (osztaly.ID = @osztalyId OR osztaly.ID = KapcsolodoCsoportok.CsoportID) and naptar.C_HETSORSZAMA = @hetSorszam ) Orak ORDER BY Datum DESC END