-- =============================================
-- Description: Az sp visszaadja az adatbázisban található oktatás-szakmai és infomratikai hibákat
-- =============================================
IF OBJECT_ID('dbo.sp_Global_GetDatabaseErrors') IS NOT NULL BEGIN
  DROP PROCEDURE [dbo].[sp_Global_GetDatabaseErrors]
END
GO

CREATE PROCEDURE [dbo].[sp_Global_GetDatabaseErrors]
  @AktivTanevNev nvarchar(20) -- Ami jelenleg az aktív tanév kellene, hogy legyen
AS
BEGIN
  CREATE TABLE #ProblemTable (
     ProblemaTipus nvarchar(12)
    ,Tipus nvarchar(100)
    ,Mennyiseg int
    ,Intezmeny int
    ,Tanev int
  )

  -- Intézmény törölt, de a fenntartóazonosítója nem nulla
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Intezmeny_Torolt_FenntartoNem999'
  ,COUNT(1)
  ,i.ID
  ,0
  FROM T_INTEZMENY i
  WHERE i.TOROLT = 'T' AND i.C_FENNTARTOAZONOSITO <> 999
  GROUP BY i.ID

  -- Intézmény nem törölt, de a fenntartóazonosítója nulla
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Intezmeny_NemTorolt_Fenntarto999'
  ,COUNT(1)
  ,i.ID
  ,0
  FROM T_INTEZMENY i
  WHERE i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO = 999
  GROUP BY i.ID

  -- Intézmény nem törölt, de mégis "_old" az azonosítója
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Intezmeny_NemTorolt_Old'
  ,COUNT(1)
  ,i.ID
  ,0
  FROM T_INTEZMENY i
  WHERE i.TOROLT = 'F' AND i.C_AZONOSITO LIKE '%[_]old'
  GROUP BY i.ID

  -- Intézménynek nincs aktív tanéve
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Intezmeny_Tanev_NincsAktiv',COUNT(1)
  ,i.ID
  ,0
  FROM T_INTEZMENY i
  WHERE NOT EXISTS (SELECT 1 FROM T_TANEV WHERE C_INTEZMENYID = i.ID AND C_AKTIV = 'T' AND TOROLT = 'F') AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900
  GROUP BY i.ID

  -- Intézménynek több aktív tanéve van
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Intezmeny_Tanev_TobbAktiv'
  ,COUNT(1)
  ,i.ID
  ,0
  FROM T_INTEZMENY i
  WHERE 1 < (SELECT COUNT(1) FROM T_TANEV WHERE C_INTEZMENYID = i.ID AND C_AKTIV = 'T' AND TOROLT = 'F') AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900
  GROUP BY i.ID

  -- Intézménynek nem az sp paramétereként megadott tanév az aktív tanéve
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Information'
  ,'Intezmeny_Tanev_RosszAktiv'
  ,COUNT(1)
  ,i.ID
  ,0
  FROM T_INTEZMENY i
  WHERE NOT EXISTS (SELECT COUNT(1) FROM T_TANEV WHERE C_INTEZMENYID = i.ID AND C_AKTIV = 'T' AND TOROLT = 'F' AND C_NEV = @AktivTanevNev) AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900
  GROUP BY i.ID

  -- Felhasználó és Alkalmazott Intézménye nem stimmel
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Felhasznalo_Alkalmazott_IntezmenyId'
  ,COUNT(1)
  ,fh.C_INTEZMENYID
  ,fh.C_TANEVID 
  FROM T_FELHASZNALO fh
  INNER JOIN T_ALKALMAZOTT a ON a.ID = fh.ID AND fh.C_INTEZMENYID <> a.C_ALINTEZMENYID AND a.TOROLT='F'
  INNER JOIN T_INTEZMENY i ON i.ID = fh.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900
  INNER JOIN T_TANEV tnfh ON tnfh.ID = fh.C_TANEVID AND tnfh.TOROLT = 'F'
  INNER JOIN T_TANEV tna ON tna.ID=a.C_ALTANEVID AND tna.TOROLT='F'
  WHERE fh.TOROLT='F' AND (tnfh.C_AKTIV='T' OR tna.C_AKTIV='T')
  GROUP BY fh.C_INTEZMENYID, fh.C_TANEVID

  -- Felhasználó és Alkalmazott Tanéve nem stimmel
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Felhasznalo_Alkalmazott_TanevId'
  ,COUNT(1)
  ,fh.C_INTEZMENYID
  ,fh.C_TANEVID 
  FROM T_FELHASZNALO fh
  INNER JOIN T_ALKALMAZOTT a ON a.ID = fh.ID AND fh.C_TANEVID <> a.C_ALTANEVID
  INNER JOIN T_INTEZMENY i ON i.ID = fh.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900
  INNER JOIN T_TANEV tnfh ON tnfh.ID = fh.C_TANEVID AND tnfh.TOROLT = 'F'
  INNER JOIN T_TANEV tna ON tna.ID=a.C_ALTANEVID AND tna.TOROLT='F'
  WHERE fh.TOROLT='F' AND (tnfh.C_AKTIV='T' OR tna.C_AKTIV='T')
  GROUP BY fh.C_INTEZMENYID, fh.C_TANEVID

  -- Felhasználó és Alkalmazott Törölt inkonzisztencia (Felhasználó)
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Felhasznalo_Alkalmazott_ToroltFelhasznaloVagyAlkalmazott'
  ,COUNT(1)
  ,fh.C_INTEZMENYID
  ,fh.C_TANEVID 
  FROM T_FELHASZNALO fh
  INNER JOIN T_ALKALMAZOTT a ON a.ID = fh.ID AND fh.TOROLT<>a.TOROLT
  INNER JOIN T_INTEZMENY i ON i.ID = fh.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900
  INNER JOIN T_TANEV tn ON tn.ID = fh.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'
  WHERE NOT EXISTS(SELECT 1 FROM T_TANULO WHERE ID=fh.ID AND TOROLT='F' AND fh.TOROLT='F')
  GROUP BY fh.C_INTEZMENYID, fh.C_TANEVID

  -- Felhasználó és Tanuló Intézménye nem stimmel
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Felhasznalo_Tanulo_IntezmenyId'
  ,COUNT(1)
  ,fh.C_INTEZMENYID
  ,fh.C_TANEVID 
  FROM T_FELHASZNALO fh
  INNER JOIN T_TANULO t ON t.ID = fh.ID AND fh.C_INTEZMENYID <> t.C_ALINTEZMENYID
  INNER JOIN T_INTEZMENY i ON i.ID = fh.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900
  INNER JOIN T_TANEV tn ON tn.ID = fh.C_TANEVID AND t.TOROLT = 'F' AND tn.C_AKTIV='T'
  WHERE fh.TOROLT='F'
  GROUP BY fh.C_INTEZMENYID, fh.C_TANEVID

  -- Felhasználó és Tanuló Tanéve nem stimmel
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Felhasznalo_Tanulo_TanevId'
  ,COUNT(1)
  ,fh.C_INTEZMENYID
  ,fh.C_TANEVID 
  FROM T_FELHASZNALO fh
  INNER JOIN T_TANULO t ON t.ID = fh.ID AND fh.C_TANEVID <> t.C_ALTANEVID AND t.TOROLT='F'
  INNER JOIN T_INTEZMENY i ON i.ID = fh.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900
  INNER JOIN T_TANEV tnfh ON tnfh.ID = fh.C_TANEVID AND tnfh.TOROLT = 'F'
  INNER JOIN T_TANEV tnt ON tnt.ID = t.C_ALTANEVID AND tnt.TOROLT = 'F'
  WHERE fh.TOROLT='F' AND (tnt.C_AKTIV='T' OR tnfh.C_AKTIV='T')
  GROUP BY fh.C_INTEZMENYID, fh.C_TANEVID

  -- Felhasználó és Tanuló Törölt inkonzisztencia (Felhasználó)
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Felhasznalo_Tanulo_ToroltFelhasznaloVagyTanulo'
  ,COUNT(1)
  ,fh.C_INTEZMENYID
  ,fh.C_TANEVID 
  FROM T_FELHASZNALO fh
  INNER JOIN T_TANULO t ON t.ID = fh.ID AND t.TOROLT='F' AND fh.TOROLT <> t.TOROLT
  INNER JOIN T_INTEZMENY i ON i.ID = fh.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900
  INNER JOIN T_TANEV tn ON tn.ID = fh.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'
  GROUP BY fh.C_INTEZMENYID, fh.C_TANEVID

  -- Felhasználó egyszerre Alkalmazott és Tanuló is
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Felhasznalo_Alkalmazott_TanuloIs'
  ,COUNT(1)
  ,fh.C_INTEZMENYID
  ,fh.C_TANEVID 
  FROM T_FELHASZNALO fh
  INNER JOIN T_INTEZMENY i ON i.ID = fh.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900
  INNER JOIN T_TANEV tn ON tn.ID = fh.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'
  WHERE EXISTS (SELECT 1 FROM T_ALKALMAZOTT WHERE ID = fh.ID AND TOROLT = 'F') 
  AND EXISTS (SELECT 1 FROM T_TANULO WHERE ID = fh.ID AND TOROLT = 'F') 
  AND fh.TOROLT = 'F'
  GROUP BY fh.C_INTEZMENYID, fh.C_TANEVID

  -- Osztálycsoport és Osztály Intézménye nem stimmel
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Osztalycsoport_Osztaly_IntezmenyId'
  ,COUNT(1)
  ,ocs.C_INTEZMENYID
  ,ocs.C_TANEVID 
  FROM T_OSZTALYCSOPORT ocs
  INNER JOIN T_OSZTALY o ON o.ID = ocs.ID AND ocs.C_INTEZMENYID <> o.C_ALINTEZMENYID AND o.TOROLT='F'
  INNER JOIN T_INTEZMENY i ON i.ID = ocs.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900
  INNER JOIN T_TANEV tn ON tn.ID = ocs.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'
  WHERE ocs.TOROLT='F'
  GROUP BY ocs.C_INTEZMENYID, ocs.C_TANEVID

  -- Osztálycsoport és Osztály Tanéve nem stimmel
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Osztalycsoport_Osztaly_TanevId'
  ,COUNT(1)
  ,ocs.C_INTEZMENYID
  ,ocs.C_TANEVID 
  FROM T_OSZTALYCSOPORT ocs
  INNER JOIN T_OSZTALY o ON o.ID = ocs.ID AND ocs.C_TANEVID <> o.C_ALTANEVID AND o.TOROLT='F'
  INNER JOIN T_INTEZMENY i ON i.ID = ocs.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900
  INNER JOIN T_TANEV tnocs ON tnocs.ID = ocs.C_TANEVID AND tnocs.TOROLT = 'F'
  INNER JOIN T_TANEV tno ON tno.ID = o.C_ALTANEVID AND tno.TOROLT = 'F'
  WHERE ocs.TOROLT='F' AND (tno.C_AKTIV='T' OR tnocs.C_AKTIV='T')
  GROUP BY ocs.C_INTEZMENYID, ocs.C_TANEVID

  -- Osztálycsoport és Osztály Törölt inkonzisztencia (Osztálycsoport)
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Osztalycsoport_Osztaly_ToroltOsztalycsoportVagyOsztaly'
  ,COUNT(1)
  ,ocs.C_INTEZMENYID
  ,ocs.C_TANEVID 
  FROM T_OSZTALYCSOPORT ocs
  INNER JOIN T_OSZTALY o ON o.ID = ocs.ID AND ocs.TOROLT <> o.TOROLT
  INNER JOIN T_INTEZMENY i ON i.ID = ocs.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900
  INNER JOIN T_TANEV tn ON tn.ID = ocs.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'
  GROUP BY ocs.C_INTEZMENYID, ocs.C_TANEVID

  -- Osztálycsoport és Csoport Intézménye nem stimmel
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Osztalycsoport_Csoport_IntezmenyId'
  ,COUNT(1)
  ,ocs.C_INTEZMENYID
  ,ocs.C_TANEVID 
  FROM T_OSZTALYCSOPORT ocs
  INNER JOIN T_CSOPORT cs ON cs.ID = ocs.ID AND ocs.C_INTEZMENYID <> cs.C_ALINTEZMENYID AND cs.TOROLT='F'
  INNER JOIN T_INTEZMENY i ON i.ID = ocs.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900
  INNER JOIN T_TANEV tn ON tn.ID = ocs.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'
  WHERE ocs.TOROLT='F'
  GROUP BY ocs.C_INTEZMENYID, ocs.C_TANEVID

  -- Osztálycsoport és Csoport Tanéve nem stimmel
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Osztalycsoport_Csoport_TanevId'
  ,COUNT(1)
  ,ocs.C_INTEZMENYID
  ,ocs.C_TANEVID 
  FROM T_OSZTALYCSOPORT ocs
  INNER JOIN T_CSOPORT cs ON cs.ID = ocs.ID AND  ocs.C_TANEVID <> cs.C_ALTANEVID AND cs.TOROLT='F'
  INNER JOIN T_INTEZMENY i ON i.ID = ocs.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900 
  INNER JOIN T_TANEV tnocs ON tnocs.ID = ocs.C_TANEVID AND tnocs.TOROLT = 'F' 
  INNER JOIN T_TANEV tncs ON tncs.ID = cs.C_ALTANEVID AND tncs.TOROLT = 'F' 
  WHERE ocs.TOROLT='F' AND (tncs.C_AKTIV='T' OR tnocs.C_AKTIV='T')
  GROUP BY ocs.C_INTEZMENYID, ocs.C_TANEVID

  -- Osztálycsoport és Csoport Törölt inkonzisztencia (Osztálycsoport)
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Osztalycsoport_Csoport_ToroltOsztalycsoportVagyCsoport'
  ,COUNT(1)
  ,ocs.C_INTEZMENYID
  ,ocs.C_TANEVID 
  FROM T_OSZTALYCSOPORT ocs
  INNER JOIN T_CSOPORT cs ON ocs.ID = cs.ID AND ocs.TOROLT <> cs.TOROLT
  INNER JOIN T_INTEZMENY i ON i.ID = ocs.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900 
  INNER JOIN T_TANEV tn ON tn.ID = ocs.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'
  GROUP BY ocs.C_INTEZMENYID, ocs.C_TANEVID

  -- Osztálycsoport egyszerre Osztály és Csoport is
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Osztalycsoport_Osztaly_CsoportIs'
  ,COUNT(1)
  ,ocs.C_INTEZMENYID
  ,ocs.C_TANEVID 
  FROM T_OSZTALYCSOPORT ocs
  INNER JOIN T_INTEZMENY i ON i.ID = ocs.C_INTEZMENYID AND i.TOROLT = 'F'  AND i.C_FENNTARTOAZONOSITO<900 
  INNER JOIN T_TANEV tn ON tn.ID = ocs.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'
  WHERE EXISTS (SELECT 1 FROM T_OSZTALY WHERE ID = ocs.ID AND TOROLT = 'F') 
  AND EXISTS (SELECT 1 FROM T_CSOPORT WHERE ID = ocs.ID AND TOROLT = 'F') 
  AND ocs.TOROLT = 'F'
  GROUP BY ocs.C_INTEZMENYID, ocs.C_TANEVID

  -- Osztálycsoport se nem osztály, se nem csoport
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Osztalycsoport_Osztaly_CsoportSe'
  ,COUNT(1)
  ,ocs.C_INTEZMENYID
  ,ocs.C_TANEVID 
  FROM T_OSZTALYCSOPORT ocs
  INNER JOIN T_INTEZMENY i ON i.ID = ocs.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900 
  INNER JOIN T_TANEV tn ON tn.ID = ocs.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'
  WHERE NOT EXISTS (SELECT 1 FROM T_OSZTALY WHERE ID = ocs.ID AND TOROLT = 'F') 
  AND NOT EXISTS (SELECT 1 FROM T_CSOPORT WHERE ID = ocs.ID AND TOROLT = 'F') 
  AND ocs.TOROLT = 'F'
  GROUP BY ocs.C_INTEZMENYID, ocs.C_TANEVID

  -- Foglalkozás és Alkalmazott Intézménye nem stimmel
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Foglalkozas_Alkalmazott_IntezmenyId'
  ,COUNT(1)
  ,f.C_INTEZMENYID
  ,f.C_TANEVID 
  FROM T_FOGLALKOZAS f
  INNER JOIN T_FELHASZNALO fh ON fh.ID = f.C_TANARID AND  fh.C_INTEZMENYID <> f.C_INTEZMENYID AND fh.TOROLT='F'
  INNER JOIN T_INTEZMENY i ON i.ID = f.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900 
  INNER JOIN T_TANEV tn ON tn.ID = f.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'
  WHERE f.TOROLT='F'
  GROUP BY f.C_INTEZMENYID, f.C_TANEVID

  -- Foglalkozás és Alkalmazott Tanéve nem stimmel
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Foglalkozas_Alkalmazott_TanevId'
  ,COUNT(1)
  ,f.C_INTEZMENYID
  ,f.C_TANEVID 
  FROM T_FOGLALKOZAS f
  INNER JOIN T_FELHASZNALO fh ON fh.ID = f.C_TANARID AND f.C_TANEVID <> fh.C_TANEVID AND fh.TOROLT='F'
  INNER JOIN T_INTEZMENY i ON i.ID = f.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900 
  INNER JOIN T_TANEV tnf ON tnf.ID = f.C_TANEVID AND tnf.TOROLT = 'F'
  INNER JOIN T_TANEV tna ON tna.ID = f.C_TANEVID AND tna.TOROLT = 'F'
  WHERE f.TOROLT='F' AND (tna.C_AKTIV='T' OR tnf.C_AKTIV='T')
  GROUP BY f.C_INTEZMENYID, f.C_TANEVID

  -- Foglalkozás és Alkalmazott Törölt inkonzisztencia
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Foglalkozas_Alkalmazott_Torolt'
  ,COUNT(1)
  ,f.C_INTEZMENYID
  ,f.C_TANEVID 
  FROM T_FOGLALKOZAS f
  INNER JOIN T_FELHASZNALO fh ON fh.ID = f.C_TANARID AND fh.TOROLT <> f.TOROLT
  INNER JOIN T_INTEZMENY i ON i.ID = f.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900 
  INNER JOIN T_TANEV tn ON tn.ID = f.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'
  WHERE f.TOROLT='F'
  GROUP BY f.C_INTEZMENYID, f.C_TANEVID

  -- Foglalkozás és Alkalmazott ahol a felhasználó nem alkalmazott
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Foglalkozas_Alkalmazott_NemAlkalmazott'
  ,COUNT(1)
  ,f.C_INTEZMENYID
  ,f.C_TANEVID 
  FROM T_FOGLALKOZAS f
  INNER JOIN T_INTEZMENY i ON i.ID = f.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900 
  INNER JOIN T_TANEV tn ON tn.ID = f.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'
  WHERE NOT EXISTS (SELECT 1 FROM T_ALKALMAZOTT WHERE ID = f.C_TANARID AND TOROLT='F') AND f.TOROLT='F'
  GROUP BY f.C_INTEZMENYID, f.C_TANEVID

  -- Foglalkozás és Tantárgy Intézménye nem stimmel
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Foglalkozas_Tantargy_IntezmenyId'
  ,COUNT(1)
  ,f.C_INTEZMENYID
  ,f.C_TANEVID 
  FROM T_FOGLALKOZAS f
  INNER JOIN T_TANTARGY tgy ON tgy.ID = f.C_TANTARGYID AND tgy.TOROLT='F' AND tgy.C_INTEZMENYID<>f.C_INTEZMENYID
  INNER JOIN T_INTEZMENY i ON i.ID = f.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900 
  INNER JOIN T_TANEV tn ON tn.ID = f.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'
  WHERE f.TOROLT='F'
  GROUP BY f.C_INTEZMENYID, f.C_TANEVID

  -- Foglalkozás és Tantárgy Tanéve nem stimmel
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Foglalkozas_Tantargy_TanevId'
  ,COUNT(1)
  ,f.C_INTEZMENYID
  ,f.C_TANEVID 
  FROM T_FOGLALKOZAS f
  INNER JOIN T_TANTARGY tgy ON tgy.ID = f.C_TANTARGYID AND f.C_TANEVID <> tgy.C_TANEVID AND tgy.TOROLT='F'
  INNER JOIN T_INTEZMENY i ON i.ID = f.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900 
  INNER JOIN T_TANEV tnf ON tnf.ID = f.C_TANEVID AND tnf.TOROLT = 'F'
  INNER JOIN T_TANEV tntgy ON tntgy.ID = tgy.C_TANEVID AND tntgy.TOROLT = 'F'
  WHERE f.TOROLT='F' AND (tnf.C_AKTIV='T' OR tntgy.C_AKTIV='T')
  GROUP BY f.C_INTEZMENYID, f.C_TANEVID

  -- Foglalkozás és Tantárgy Törölt inkonzisztencia
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Foglalkozas_Tantargy_Torolt'
  ,COUNT(1)
  ,f.C_INTEZMENYID
  ,f.C_TANEVID 
  FROM T_FOGLALKOZAS f
  INNER JOIN T_TANTARGY tgy ON tgy.ID = f.C_TANTARGYID AND tgy.TOROLT<>f.TOROLT
  INNER JOIN T_INTEZMENY i ON i.ID = f.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900 
  INNER JOIN T_TANEV tn ON tn.ID = f.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'
  WHERE f.TOROLT='F'
  GROUP BY f.C_INTEZMENYID, f.C_TANEVID

  -- Foglalkozás és Osztálycsoport Intézménye nem stimmel
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Foglalkozas_OsztalyCsoport_IntezmenyId'
  ,COUNT(1)
  ,f.C_INTEZMENYID
  ,f.C_TANEVID 
  FROM T_FOGLALKOZAS f
  INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = f.C_OSZTALYCSOPORTID AND f.C_INTEZMENYID <> ocs.C_INTEZMENYID AND ocs.TOROLT='F'
  INNER JOIN T_INTEZMENY i ON i.ID = f.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900 
  INNER JOIN T_TANEV tn ON tn.ID = f.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'
  WHERE f.TOROLT='F'
  GROUP BY f.C_INTEZMENYID, f.C_TANEVID

  -- Foglalkozás és Osztálycsoport Tanéve nem stimmel
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Foglalkozas_OsztalyCsoport_TanevId'
  ,COUNT(1)
  ,f.C_INTEZMENYID
  ,f.C_TANEVID 
  FROM T_FOGLALKOZAS f
  INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = f.C_OSZTALYCSOPORTID AND ocs.TOROLT='F' AND f.C_TANEVID <> ocs.C_TANEVID
  INNER JOIN T_INTEZMENY i ON i.ID = f.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900 
  INNER JOIN T_TANEV tnf ON tnf.ID = f.C_TANEVID AND tnf.TOROLT = 'F' 
  INNER JOIN T_TANEV tnocs ON tnocs.ID = ocs.C_TANEVID AND tnocs.TOROLT = 'F' 
  WHERE f.TOROLT='F' AND (tnocs.C_AKTIV='T' OR tnf.C_AKTIV='T')
  GROUP BY f.C_INTEZMENYID, f.C_TANEVID

  -- Foglalkozás és Osztálycsoport Törölt inkonzisztencia
  INSERT INTO #ProblemTable (ProblemaTipus, Tipus, Mennyiseg, Intezmeny, Tanev)
  SELECT 
   'Error'
  ,'Foglalkozas_OsztalyCsoport_Torolt'
  ,COUNT(1)
  ,f.C_INTEZMENYID
  ,f.C_TANEVID 
  FROM T_FOGLALKOZAS f
  INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = f.C_OSZTALYCSOPORTID AND f.TOROLT <> ocs.TOROLT
  INNER JOIN T_INTEZMENY i ON i.ID = f.C_INTEZMENYID AND i.TOROLT = 'F' AND i.C_FENNTARTOAZONOSITO<900 
  INNER JOIN T_TANEV tn ON tn.ID = f.C_TANEVID AND tn.TOROLT = 'F' AND tn.C_AKTIV='T'  
  WHERE f.TOROLT='F'
  GROUP BY f.C_INTEZMENYID, f.C_TANEVID
  
  -- Megjelenítés
  SELECT * FROM #ProblemTable Order By ProblemaTipus ASC, Mennyiseg DESC

END
GO