﻿DROP PROCEDURE IF EXISTS uspUpdateAtlagByTanev
GO

CREATE PROCEDURE uspUpdateAtlagByTanev
   @pTanevId int
  ,@pIntezmenyId int
  ,@pFelhasznaloId int
AS
BEGIN
  UPDATE tta SET
     C_SULYOZOTTOSZTALYZATOSSZEGE = x.C_SULYOZOTTOSZTALYZATOSSZEGE
    ,C_SULYOZOTTOSZTALYZATSZAMA = x.C_SULYOZOTTOSZTALYZATSZAMA
    ,MODIFIER = @pFelhasznaloId
  FROM T_TANULOTANTARGYATLAG_OSSZES tta
  INNER JOIN (
    SELECT 
      er.C_TANULOID, 
      er.C_TANTARGYID, 
      SUM(d.C_VALUE * em.C_SULY) AS C_SULYOZOTTOSZTALYZATOSSZEGE, 
      SUM(em.C_SULY) AS C_SULYOZOTTOSZTALYZATSZAMA,
      feh.C_OKTATASINEVELESIFELADATTIPUS AS C_OKTATASNEVELESIFELADATID
    FROM T_TANULOERTEKELES_OSSZES er
      INNER JOIN T_ERTEKELESMOD_OSSZES em ON em.ID = er.C_ERTEKELESMODID AND em.C_ALTANEVID = er.C_TANEVID
      INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = er.C_ERTEKELESOSZTALYZATID AND d.C_TANEVID = er.C_TANEVID
      INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = er.C_OSZTALYCSOPORTID
      INNER JOIN T_FELADATELLATASIHELY_OSSZES feh ON feh.ID = ocs.C_FELADATELLATASIHELYID
    WHERE er.C_TANEVID = @pTanevId
      AND er.C_INTEZMENYID = @pIntezmenyId
      AND er.C_TIPUSID = 1518
      AND er.TOROLT = 'F'
    GROUP BY er.C_TANULOID, er.C_TANTARGYID, feh.C_OKTATASINEVELESIFELADATTIPUS
  ) x ON x.C_TANULOID = tta.C_TANULOID AND x.C_TANTARGYID = tta.C_TANTARGYID AND x.C_OKTATASNEVELESIFELADATID = tta.C_OKTATASNEVELESIFELADATID
END
GO
