51 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
SET ANSI_NULLS ON
 | 
						|
GO
 | 
						|
SET QUOTED_IDENTIFIER ON
 | 
						|
GO
 | 
						|
 | 
						|
IF OBJECT_ID('fnGetDokumentumKapcsolodoOsztalycsoportok') IS NOT NULL
 | 
						|
BEGIN
 | 
						|
    DROP FUNCTION fnGetDokumentumKapcsolodoOsztalycsoportok
 | 
						|
END
 | 
						|
GO
 | 
						|
 | 
						|
CREATE FUNCTION fnGetDokumentumKapcsolodoOsztalycsoportok (@osztalyCsoportId int, @ptanevId int, @csakTanoraiCelu INT= 1)
 | 
						|
  RETURNS TABLE
 | 
						|
RETURN (
 | 
						|
  SELECT @osztalyCsoportId AS ID, 'OsztalycsoportOraja' AS OKA
 | 
						|
UNION
 | 
						|
  SELECT ID, 'OsztalybontottOra' AS OKA FROM T_CSOPORT_OSSZES  
 | 
						|
  WHERE C_OSZTALYBONTASID = @osztalyCsoportId AND C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@ptanevId))
 | 
						|
UNION 
 | 
						|
  SELECT DISTINCT tcs.C_OSZTALYCSOPORTID, 'TanuloMasOra' AS OKA 
 | 
						|
  FROM T_TANULOCSOPORT_OSSZES tcs
 | 
						|
  INNER JOIN T_CSOPORT_OSSZES ON T_CSOPORT_OSSZES.ID = tcs.C_OSZTALYCSOPORTID
 | 
						|
  INNER JOIN (
 | 
						|
    SELECT DISTINCT x.C_TANULOID, x.C_BELEPESDATUM, x.C_KILEPESDATUM
 | 
						|
    FROM T_TANULOCSOPORT_OSSZES x 
 | 
						|
    INNER JOIN T_OSZTALYCSOPORT_OSSZES ON T_OSZTALYCSOPORT_OSSZES.ID = x.C_OSZTALYCSOPORTID
 | 
						|
    INNER JOIN T_TANEV_OSSZES ON T_TANEV_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID
 | 
						|
    WHERE x.C_OSZTALYCSOPORTID = @osztalyCsoportId AND x.TOROLT = 'F' AND (x.C_KILEPESDATUM > T_TANEV_OSSZES.C_KEZDONAP OR x.C_KILEPESDATUM IS NULL)
 | 
						|
  ) AS OSZTALY_TANULO ON OSZTALY_TANULO.C_TANULOID = tcs.C_TANULOID AND tcs.C_BELEPESDATUM >= OSZTALY_TANULO.C_BELEPESDATUM AND (OSZTALY_TANULO.C_KILEPESDATUM IS NULL OR tcs.C_BELEPESDATUM < OSZTALY_TANULO.C_KILEPESDATUM)
 | 
						|
  WHERE tcs.C_OSZTALYCSOPORTID <> @osztalyCsoportId AND tcs.TOROLT = 'F' 
 | 
						|
      AND tcs.C_OSZTALYCSOPORTID NOT IN (SELECT ID FROM T_CSOPORT_OSSZES  WHERE C_OSZTALYBONTASID = @osztalyCsoportId)
 | 
						|
      AND tcs.C_OSZTALYCSOPORTID NOT IN (SELECT C_OSZTALYBONTASID AS ID FROM T_CSOPORT_OSSZES WHERE ID = @osztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL)
 | 
						|
      AND tcs.C_OSZTALYCSOPORTID NOT IN (
 | 
						|
        SELECT ID FROM T_CSOPORT_OSSZES WHERE C_OSZTALYBONTASID IN (SELECT C_OSZTALYBONTASID FROM T_CSOPORT_OSSZES WHERE ID = @osztalyCsoportId)
 | 
						|
      ) AND (@csakTanoraiCelu = 0 OR C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@ptanevId)))
 | 
						|
UNION
 | 
						|
  SELECT C_OSZTALYBONTASID AS ID, 'OsztalybontottOra2' AS OKA 
 | 
						|
  FROM T_CSOPORT_OSSZES
 | 
						|
  WHERE ID = @osztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL AND (@csakTanoraiCelu = 0 OR C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@ptanevId)))
 | 
						|
UNION
 | 
						|
  SELECT ID, 'OsztalybontottOra3' AS OKA 
 | 
						|
  FROM T_CSOPORT_OSSZES 
 | 
						|
  WHERE C_OSZTALYBONTASID IN (
 | 
						|
    SELECT C_OSZTALYBONTASID 
 | 
						|
    FROM T_CSOPORT_OSSZES 
 | 
						|
    WHERE ID = @osztalyCsoportId
 | 
						|
  ) AND ID <> @osztalyCsoportId  AND (@csakTanoraiCelu = 0 OR C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@ptanevId)))
 | 
						|
)
 | 
						|
 | 
						|
GO
 |