155 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			155 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
IF OBJECT_ID('[dbo].[sp_GetErettsegiKerdesek]', 'P') IS NOT NULL BEGIN
 | 
						|
  DROP PROCEDURE [dbo].[sp_GetErettsegiKerdesek]
 | 
						|
END
 | 
						|
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 |