PDA

View Full Version : کمک برای نوشتن یک store procedure



Parastoo7
سه شنبه 10 اسفند 1389, 13:51 عصر
سلام
دو تا جدول دارم که در اولی با نام test کل آزمون های تعریف شده را در آن نگهداری می کنم. در جدول دوم هم اطلاعات کاربر و آزمونی که یک کاربر برداشته و نمره را نگهداری می کنم.
حالا می خوام یک store procedure بنویسم که همه آزمون های تعریف شده یک برای یک درس خاص را که کاربر یا اصلا بر نداشته یا برداشته و مردود شده را نمایش بده.

setANSI_NULLSON
setQUOTED_IDENTIFIERON
go



ALTERPROCEDURE [dbo].[sp_test]
@darsCode int,
@version int,
@stID varchar(10),
@grade float
AS
BEGIN

SELECT
test.id,
test.title
FROM
test INNERJOIN testGet ON test.id=testGet.idTest
where
(test.id likeconvert(varchar,@darsCode)+'%'AND(testGet.stID =@stID)AND( testGet.grade<75 ))
END


اما اگه کاربر درسی را اصلا تا الان بر نداشته باشه نشون نمیده . چون شرط دوم بر قرار نمیشه. نمیدونم چطوری بنویسم.
کسی راهی می دونه

behrouzlo
سه شنبه 10 اسفند 1389, 14:45 عصر
به جای Inner join از left outer join استفاده کنید.

Parastoo7
چهارشنبه 11 اسفند 1389, 09:27 صبح
با این روش هم بقیه ردیف های جدول اول را نمیاره.
من می خوام فقط شرط اول همیشه روی جدول اول اعمال بشه . بعدش اگه در جدول دوم شرط دوم و سوم برقرار نبود فقطی اون ردیف جدول اول از select هام حذف بشه.

mobtakercode
چهارشنبه 11 اسفند 1389, 15:38 عصر
من آنچیزی را که شما می خواستید بدون استفاده از join به صورت زیر نوشتم عدد 1 شماره کاربر و عدد 10 برای تست مردود شدن است.



SELECT id,title FROM test
where
id in(select id from testget where stID=1 and grade<10)
or id not in(select id from testget where stID=1)