61 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
DROP FUNCTION IF EXISTS fnGetDokumentumKapcsolodoOsztalycsoportok
 | 
						|
GO
 | 
						|
 | 
						|
CREATE FUNCTION fnGetDokumentumKapcsolodoOsztalycsoportok (@osztalyCsoportId int, @ptanevId int, @csakTanoraiCelu INT= 1)
 | 
						|
  RETURNS @ocs TABLE (ID int)
 | 
						|
AS BEGIN
 | 
						|
 | 
						|
  DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId)
 | 
						|
 | 
						|
  INSERT INTO @ocs
 | 
						|
 | 
						|
  SELECT @osztalyCsoportId AS ID
 | 
						|
 | 
						|
  UNION
 | 
						|
 | 
						|
  SELECT cs.ID
 | 
						|
  FROM T_CSOPORT_OSSZES cs
 | 
						|
    INNER JOIN T_CSOPORTTIPUS_OSSZES cst ON cs.C_TIPUSA = cst.ID AND cs.C_ALTANEVID = cst.C_ALTANEVID
 | 
						|
  WHERE C_OSZTALYBONTASID = @osztalyCsoportId
 | 
						|
    AND (@csakTanoraiCelu = 0 OR C_ISTANORAICELU = 'T')
 | 
						|
 | 
						|
  UNION
 | 
						|
 | 
						|
  SELECT tcs.C_OSZTALYCSOPORTID
 | 
						|
  FROM T_TANULOCSOPORT_OSSZES tcs
 | 
						|
    INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = tcs.C_OSZTALYCSOPORTID
 | 
						|
    INNER JOIN T_CSOPORTTIPUS_OSSZES cst ON cs.C_TIPUSA = cst.ID AND cs.C_ALTANEVID = cst.C_ALTANEVID
 | 
						|
    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)
 | 
						|
    ) 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)
 | 
						|
    INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID AND ocs.C_FELADATKATEGORIAID = @kategoriaId
 | 
						|
  WHERE tcs.C_OSZTALYCSOPORTID <> @osztalyCsoportId AND tcs.TOROLT = 'F'
 | 
						|
    AND (@csakTanoraiCelu = 0 OR C_ISTANORAICELU = 'T')
 | 
						|
 | 
						|
  UNION
 | 
						|
 | 
						|
  SELECT C_OSZTALYBONTASID AS ID
 | 
						|
  FROM T_CSOPORT_OSSZES cs
 | 
						|
    INNER JOIN T_CSOPORTTIPUS_OSSZES cst ON cs.C_TIPUSA = cst.ID AND cs.C_ALTANEVID = cst.C_ALTANEVID
 | 
						|
  WHERE cs.ID = @osztalyCsoportId
 | 
						|
    AND C_OSZTALYBONTASID IS NOT NULL
 | 
						|
    AND (@csakTanoraiCelu = 0 OR C_ISTANORAICELU = 'T')
 | 
						|
 | 
						|
  UNION
 | 
						|
 | 
						|
  SELECT cs.ID
 | 
						|
  FROM T_CSOPORT_OSSZES cs
 | 
						|
    INNER JOIN T_CSOPORTTIPUS_OSSZES cst ON cs.C_TIPUSA = cst.ID AND cs.C_ALTANEVID = cst.C_ALTANEVID
 | 
						|
  WHERE C_OSZTALYBONTASID IN (SELECT C_OSZTALYBONTASID FROM T_CSOPORT_OSSZES WHERE ID = @osztalyCsoportId)
 | 
						|
    AND (@csakTanoraiCelu = 0 OR C_ISTANORAICELU = 'T')
 | 
						|
 | 
						|
    RETURN
 | 
						|
END
 | 
						|
GO
 |