DROP FUNCTION IF EXISTS fnGetDokumentumKapcsolodoOsztalycsoportok GO CREATE FUNCTION fnGetDokumentumKapcsolodoOsztalycsoportok (@osztalyCsoportId int, @ptanevId int, @csakTanoraiCelu INT= 1, @kapcsolodoCsoportokSzureseOsztalyBesorolasra INT = 0) 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 AND (cs.C_OSZTALYBONTASID IS NULL OR cs.C_OSZTALYBONTASID = @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_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > OSZTALY_TANULO.C_BELEPESDATUM) AND (OSZTALY_TANULO.C_KILEPESDATUM IS NULL OR tcs.C_BELEPESDATUM <= OSZTALY_TANULO.C_KILEPESDATUM) INNER JOIN T_OSZTALYCSOPORT_OSSZES 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') AND (@kapcsolodoCsoportokSzureseOsztalyBesorolasra = 0 OR (OSZTALY_TANULO.C_KILEPESDATUM IS NULL OR OSZTALY_TANULO.C_KILEPESDATUM >= tcs.C_KILEPESDATUM)) 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