DROP PROCEDURE IF EXISTS [dbo].[sp_GetErettsegiKerdesek] GO CREATE PROCEDURE [dbo].[sp_GetErettsegiKerdesek] @tanuloId int, @kerdesSzam int, @erettsegiTantargyId int, @erettsegiSzintId int AS BEGIN SET NOCOUNT ON; DECLARE @SorokSzama INT DECLARE @TempErettsegi TABLE ( Id int, Cim nvarchar(1000), ErettsegiSzintId int, ErettsegiTantargyId int, HelyesValasz nvarchar(1000), Kategoria nvarchar(10), Kep nvarchar(max), Kerdes nvarchar(1000), Szoveg nvarchar(2000), Tema nvarchar(1000), ValaszB nvarchar(1000), ValaszC nvarchar(1000), ValaszD nvarchar(1000), ValaszE nvarchar(1000), ValaszF nvarchar(1000), ValaszSzoveges nvarchar(1000) ) IF (@kerdesSzam = 0) BEGIN SET @kerdesSzam = 50000 END -- Új kérdesek betöltése INSERT @TempErettsegi ( Id, Cim, ErettsegiSzintId, ErettsegiTantargyId, HelyesValasz, Kategoria, Kep, Kerdes, Szoveg, Tema, ValaszB, ValaszC, ValaszD, ValaszE, ValaszF, ValaszSzoveges) SELECT TOP (@kerdesSzam) [ID] as Id ,[C_CIM] as Cim ,[C_ERETTSEGISZINTID] as ErettsegiSzintId ,[C_ERETTSEGITANTARGYID] as ErettsegiTantargyId ,[C_HELYESVALASZ] as HelyesValasz ,[C_KATEGORIA] as Kategoria ,[C_KEP] as Kep ,[C_KERDES] as Kerdes ,[C_SZOVEG] as Szoveg ,[C_TEMA] as Tema ,[C_VALASZB] as ValaszB ,[C_VALASZC] as ValaszC ,[C_VALASZD] as ValaszD ,[C_VALASZE] as ValaszE ,[C_VALASZF] as ValaszF ,[C_VALASZSZOVEGES] as ValaszSzoveges FROM T_ERETTSEGIKERDES ek WHERE ek.C_ERETTSEGISZINTID = @erettsegiSzintId AND ek.C_ERETTSEGITANTARGYID = @erettsegiTantargyId AND NOT EXISTS (SELECT 1 FROM T_ERETTSEGIVALASZ tv WHERE tv.C_TANULOID = @tanuloId AND tv.C_ERETTSEGIKERDESID = ek.ID) ORDER BY NEWID() SELECT @SorokSzama = COUNT(1) FROM @TempErettsegi -- Utoljára hibás kérdések betöltése IF (@SorokSzama < @kerdesSzam) BEGIN INSERT @TempErettsegi ( Id, Cim, ErettsegiSzintId, ErettsegiTantargyId, HelyesValasz, Kategoria, Kep, Kerdes, Szoveg, Tema, ValaszB, ValaszC, ValaszD, ValaszE, ValaszF, ValaszSzoveges) SELECT TOP (@kerdesSzam - @SorokSzama) [ID] as Id ,[C_CIM] as Cim ,[C_ERETTSEGISZINTID] as ErettsegiSzintId ,[C_ERETTSEGITANTARGYID] as ErettsegiTantargyId ,[C_HELYESVALASZ] as HelyesValasz ,[C_KATEGORIA] as Kategoria ,[C_KEP] as Kep ,[C_KERDES] as Kerdes ,[C_SZOVEG] as Szoveg ,[C_TEMA] as Tema ,[C_VALASZB] as ValaszB ,[C_VALASZC] as ValaszC ,[C_VALASZD] as ValaszD ,[C_VALASZE] as ValaszE ,[C_VALASZF] as ValaszF ,[C_VALASZSZOVEGES] as ValaszSzoveges FROM T_ERETTSEGIKERDES ek WHERE ek.C_ERETTSEGISZINTID = @erettsegiSzintId AND ek.C_ERETTSEGITANTARGYID = @erettsegiTantargyId AND NOT EXISTS (SELECT 1 FROM @TempErettsegi te WHERE te.Id = ek.ID) AND 'F' = (SELECT TOP 1 C_HELYES FROM T_ERETTSEGIVALASZ tv WHERE tv.C_TANULOID = @tanuloId AND tv.C_ERETTSEGIKERDESID = ek.ID ORDER BY C_DATUM DESC) ORDER BY NEWID() END SELECT @SorokSzama = COUNT(1) FROM @TempErettsegi -- Maradék elemek véletlenszerűen IF (@SorokSzama < @kerdesSzam) BEGIN INSERT @TempErettsegi ( Id, Cim, ErettsegiSzintId, ErettsegiTantargyId, HelyesValasz, Kategoria, Kep, Kerdes, Szoveg, Tema, ValaszB, ValaszC, ValaszD, ValaszE, ValaszF, ValaszSzoveges) SELECT TOP (@kerdesSzam - @SorokSzama) [ID] as Id ,[C_CIM] as Cim ,[C_ERETTSEGISZINTID] as ErettsegiSzintId ,[C_ERETTSEGITANTARGYID] as ErettsegiTantargyId ,[C_HELYESVALASZ] as HelyesValasz ,[C_KATEGORIA] as Kategoria ,[C_KEP] as Kep ,[C_KERDES] as Kerdes ,[C_SZOVEG] as Szoveg ,[C_TEMA] as Tema ,[C_VALASZB] as ValaszB ,[C_VALASZC] as ValaszC ,[C_VALASZD] as ValaszD ,[C_VALASZE] as ValaszE ,[C_VALASZF] as ValaszF ,[C_VALASZSZOVEGES] as ValaszSzoveges FROM T_ERETTSEGIKERDES ek WHERE ek.C_ERETTSEGISZINTID = @erettsegiSzintId AND ek.C_ERETTSEGITANTARGYID = @erettsegiTantargyId AND NOT EXISTS (SELECT 1 FROM @TempErettsegi te WHERE te.Id = ek.ID) ORDER BY NEWID() END SELECT TOP (@kerdesSzam) Id as Id ,Cim as Cim ,ErettsegiSzintId as ErettsegiSzintId ,ErettsegiTantargyId as ErettsegiTantargyId ,HelyesValasz as HelyesValasz ,Kategoria as Kategoria ,Kep as Kep ,Kerdes as Kerdes ,Szoveg as Szoveg ,Tema as Tema ,ValaszB as ValaszB ,ValaszC as ValaszC ,ValaszD as ValaszD ,ValaszE as ValaszE ,ValaszF as ValaszF ,ValaszSzoveges as ValaszSzoveges FROM @TempErettsegi END GO