61 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			2.5 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('fnGetKapcsolodoOsztalycsoportok') IS NOT NULL BEGIN
 | 
						|
  DROP FUNCTION fnGetKapcsolodoOsztalycsoportok
 | 
						|
END
 | 
						|
GO
 | 
						|
 | 
						|
CREATE FUNCTION [dbo].[fnGetKapcsolodoOsztalycsoportok] (@osztalyCsoportId int)
 | 
						|
  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 TOROLT = 'F'
 | 
						|
  UNION 
 | 
						|
  SELECT DISTINCT tcs.C_OSZTALYCSOPORTID, 'TanuloMasOra' AS OKA FROM T_TANULOCSOPORT_OSSZES tcs
 | 
						|
  WHERE tcs.TOROLT = 'F' AND tcs.C_TANULOID IN (
 | 
						|
    SELECT x.C_TANULOID FROM T_TANULOCSOPORT_OSSZES x 
 | 
						|
    WHERE x.C_OSZTALYCSOPORTID = @osztalyCsoportId AND x.TOROLT = 'F'
 | 
						|
      AND (x.C_BELEPESDATUM <= GETDATE() AND (x.C_KILEPESDATUM > GETDATE() OR x.C_KILEPESDATUM IS NULL)) 
 | 
						|
    )
 | 
						|
    AND tcs.C_BELEPESDATUM <= GETDATE() AND (tcs.C_KILEPESDATUM > GETDATE() 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 TOROLT = 'F'
 | 
						|
    )
 | 
						|
    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 TOROLT = 'F'   
 | 
						|
    )
 | 
						|
    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 TOROLT = 'F'
 | 
						|
      )  AND TOROLT = 'F'
 | 
						|
    )
 | 
						|
  UNION
 | 
						|
  SELECT C_OSZTALYBONTASID AS ID, 'OsztalybontottOra' AS OKA FROM T_CSOPORT_OSSZES
 | 
						|
  WHERE ID = @osztalyCsoportId 
 | 
						|
    AND C_OSZTALYBONTASID IS NOT NULL AND TOROLT = 'F'
 | 
						|
  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 TOROLT = 'F'
 | 
						|
  )
 | 
						|
  AND ID <> @osztalyCsoportId  AND TOROLT = 'F'
 | 
						|
)
 |