PDA

View Full Version : چک کردن مقادیر یک فیلد از جدول در یک یا چند رکورد



piroozman
سه شنبه 11 مهر 1391, 20:31 عصر
با سلام. بنده جدولی در برنامه خود دارم. این جدول دارای ستونی به نام score از نوع int و ستون دیگری با نام id می باشد. id کلید خارجی است. حال می خوام مقادیر جمع فیلدهای مربوط به ستون score که دارای id یکسان هستند بیشتر از 100 نباشد (کمتر یا مساوی 100). به مثال زیر توجه کنید:
id score
40 1
30 1
30 1
ممنون می شم راهنمایی کنید.

behnam_one
چهارشنبه 12 مهر 1391, 12:05 عصر
SELECT ID,SUM(Scor) FROM tableName
GROUP BY ID
HAVING SUM(Scor)<=100

piroozman
چهارشنبه 12 مهر 1391, 20:20 عصر
SELECT ID,SUM(Scor) FROM tableName
GROUP BY ID
HAVING SUM(Scor)<=100
با سلام و تشکر. فکر کنم سئوالم رو بد مطرح کردم. بنده قصد انتخاب ندارم بلکه می خواهم رکورد جدیدی که درج می کنم اگر ای دی یکسانی با سایر رکورد ها دارد فیلد Score آنها بیشتر از 100 نشود. بنده خودم با یک پروسیجر به صورت زیر نوشته ام. مطمئنا روشهای بهتری وجود دارد. ممنون می شم مطرح کنید
alter PROCEDURE InsertIntoSpecialAxesYear

@yearId int,@axesId int,@Score int,@return int output,@SpecialAxeScore int output
AS
BEGIN

SET NOCOUNT ON;

if((select SUM(score)+@Score from SpecialAxesYear where yearId=@yearId)>(select SpecialAxesScore from Year where yearId=@yearId))
begin
select @SpecialAxeScore=(select y.SpecialAxesScore from Year y where y.yearId=@yearId)
select @return=-1
return
end



INSERT INTO [Evaluation].[dbo].[SpecialAxesYear]
([yearId]
,[axesId]
,[Score])
VALUES
(@yearId,
@axesId,
@Score )
END
GO
در این پروسیجر قبل از عمل درج جمع مقادیر Score که دارای yearId یکسانی دارد چک می شود که بیشتر از 100 نباشد.

behnam_one
شنبه 15 مهر 1391, 08:34 صبح
IF EXISTS(SELECT ID,SUM(Scor) +@Scor FROM tableName
WHERE ID = @ID GROUP BY ID HAVING SUM(Scor)+@Scor<=100)
BEGIN
--دستورات مربوط به بازگشت رو بنويسين
END


--در غير اين صورت باقي برنامه اجرا ميگردد