54 lines
1.9 KiB
Transact-SQL
54 lines
1.9 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ó!
|
|
*/
|
|
|
|
DROP FUNCTION IF EXISTS fnGetKapcsolodoOsztalycsoportok
|
|
GO
|
|
|
|
CREATE FUNCTION [dbo].[fnGetKapcsolodoOsztalycsoportok] (@osztalyCsoportId int)
|
|
RETURNS TABLE
|
|
RETURN (
|
|
SELECT @osztalyCsoportId AS ID /* Önmaga */
|
|
|
|
UNION
|
|
|
|
SELECT ID /* Osztály esetén, a bontott csoportok */
|
|
FROM T_CSOPORT_OSSZES
|
|
WHERE C_OSZTALYBONTASID = @osztalyCsoportId AND TOROLT = 'F'
|
|
|
|
UNION
|
|
|
|
SELECT C_OSZTALYBONTASID AS ID /* Csoport esetén, a ha bontott, akkor az osztálya */
|
|
FROM T_CSOPORT_OSSZES
|
|
WHERE ID = @osztalyCsoportId
|
|
AND C_OSZTALYBONTASID IS NOT NULL AND TOROLT = 'F'
|
|
|
|
UNION
|
|
|
|
SELECT ID /* Csoport esetén, a ha bontott, akkor az osztályának a többi csoportbontása */
|
|
FROM T_CSOPORT_OSSZES
|
|
WHERE C_OSZTALYBONTASID IN (
|
|
SELECT C_OSZTALYBONTASID FROM T_CSOPORT_OSSZES
|
|
WHERE ID = @osztalyCsoportId AND TOROLT = 'F'
|
|
) AND TOROLT ='F'
|
|
|
|
UNION
|
|
|
|
SELECT tcs2.C_OSZTALYCSOPORTID /* Azok az osztálycsoportok, ahová járnak tanulók a @osztalyCsoportId-ból */
|
|
FROM T_TANULOCSOPORT_OSSZES tcs
|
|
INNER JOIN T_TANULOCSOPORT_OSSZES tcs2 ON tcs2.C_TANULOID = tcs.C_TANULOID
|
|
WHERE tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId
|
|
AND tcs.C_BELEPESDATUM <= GETDATE() AND (tcs.C_KILEPESDATUM > GETDATE() OR tcs.C_KILEPESDATUM IS NULL)
|
|
AND tcs2.C_BELEPESDATUM <= GETDATE() AND (tcs2.C_KILEPESDATUM > GETDATE() OR tcs2.C_KILEPESDATUM IS NULL)
|
|
AND tcs.TOROLT = 'F'
|
|
AND tcs2.TOROLT = 'F'
|
|
)
|
|
GO
|
|
|
|
|
|
|