61 lines
2.4 KiB
Transact-SQL
61 lines
2.4 KiB
Transact-SQL
/*
|
|
Minden olyan esetben amikor egy osztályhoz tartozó csoportokat kell meghatározni,
|
|
akkor az alábbi módon kell ezeket megadni:
|
|
a. Egy osztályhoz tartozik minden olyan csoport, amelynek tagja az osztály bármelyik tanulója.
|
|
Tehát ha egy osztályból akár egyetlen tanuló is tagja egy csoportnak, akkor az az osztályhoz is kapcsolódik.
|
|
b. Továbbá egy osztályhoz mindig kapcsolódnak az osztálybontásosnak jelölt csoportjaik is,
|
|
függetlenül attól, hogy abban van-e tanuló!
|
|
*/
|
|
|
|
IF OBJECT_ID('fnGetKapcsolodoOsztalycsoportokByDate') IS NOT NULL BEGIN
|
|
DROP FUNCTION fnGetKapcsolodoOsztalycsoportokByDate
|
|
END
|
|
GO
|
|
|
|
CREATE FUNCTION fnGetKapcsolodoOsztalycsoportokByDate (@osztalyCsoportId int, @start datetime, @end datetime)
|
|
RETURNS TABLE
|
|
RETURN (
|
|
SELECT @osztalyCsoportId AS ID, 'OsztalycsoportOraja' AS OKA
|
|
UNION
|
|
SELECT ID, 'OsztalybontottOra' AS OKA FROM T_CSOPORT_OSSZES
|
|
WHERE C_OSZTALYBONTASID = @osztalyCsoportId
|
|
UNION
|
|
SELECT DISTINCT tcs.C_OSZTALYCSOPORTID, 'TanuloMasOra' AS OKA FROM T_TANULOCSOPORT_OSSZES tcs
|
|
WHERE tcs.C_TANULOID IN (
|
|
SELECT x.C_TANULOID FROM T_TANULOCSOPORT_OSSZES x
|
|
WHERE x.C_OSZTALYCSOPORTID = @osztalyCsoportId
|
|
AND (x.C_BELEPESDATUM <= @end AND x.C_KILEPESDATUM > @start OR x.C_KILEPESDATUM IS NULL)
|
|
)
|
|
AND (tcs.C_BELEPESDATUM <= @end AND tcs.C_KILEPESDATUM > @start OR tcs.C_KILEPESDATUM IS NULL)
|
|
AND tcs.C_OSZTALYCSOPORTID <> @osztalyCsoportId
|
|
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
|
|
)
|
|
)
|
|
UNION
|
|
SELECT C_OSZTALYBONTASID AS ID, 'OsztalybontottOra' AS OKA FROM T_CSOPORT_OSSZES
|
|
WHERE ID = @osztalyCsoportId
|
|
AND C_OSZTALYBONTASID IS NOT NULL
|
|
UNION
|
|
SELECT ID, 'OsztalybontottOra' AS OKA FROM T_CSOPORT_OSSZES
|
|
WHERE C_OSZTALYBONTASID IN (
|
|
SELECT C_OSZTALYBONTASID FROM T_CSOPORT_OSSZES
|
|
WHERE ID = @osztalyCsoportId
|
|
)
|
|
AND ID <> @osztalyCsoportId
|
|
)
|
|
GO
|