ورود

View Full Version : نمایش رکوردها با توجه به مقدار فیلد تعداد



amir_pro
جمعه 24 خرداد 1392, 15:31 عصر
سلام دوستان
سوالی که برام پیش اومده اینه که اگه یه جدول داشته باشیم که شامل سه تا فیلد کد کالا و تعداد و قیمت باشه و هر کد کالایی یه تعدادی داشته باشه که بدیهی دیگه که این تعدادها متغیر و با هم فرق دارند چه طوری میشه این رکوردها رو با توجه به تعدادی که در فیلد تعداد مشخص شده واکشی کرد؟ البته بدون استفاده از کرسر

یوسف زالی
جمعه 24 خرداد 1392, 16:46 عصر
select * from TBL where Cnt = @Cnt

الان کجاش دقیقا مشکل دارید؟

amir_pro
جمعه 24 خرداد 1392, 17:59 عصر
select * from TBL where Cnt = @Cnt

الان کجاش دقیقا مشکل دارید؟

ممنون از راهنماییتون. اینی که پفتینا بلدم. منظورما نتونستم درست بیان کنم. چیزی که شما نوشتید میاد تمام رکووردهای جدول که Cnt اونا برابر با پارامتر @Cnt هست رو نشون میده. حالا سوال من اینه: Cnt رکورد اول 3 - رکورد دوم 5 - رکورد سوم 12+1 - رکورد چهارم 25 - خوب. حالا رکورد اول را سه بار نشون بده رکورد دوم رو 5 بار رکورد سوم رو 13 بار و رکورد چهارم رو 25 بار. یعنی خروجی دستور سلکت یا تابع باید 46 رکورد باشه

یوسف زالی
جمعه 24 خرداد 1392, 20:33 عصر
آهان!!
در حقیقت تکرار می خواهید.
یکی از روشها اینه:



declare @TBL table(SN int identity(1, 1), Data varchar(20), Cnt int)
insert into @TBL
values
('Salam', 2),
('Test', 3),
('Zero', 0),
('Data', 1)

; with CTE as (
select 1 as N
union all
select N +1
from CTE
where N < 1000
)
select *
from @TBL A
join CTE on N <= Cnt
order by SN
option (MAXRECURSION 0)

amir_pro
جمعه 24 خرداد 1392, 21:49 عصر
نمیشه با یه دستور سلکت این کارا کرد؟ چون از اکسس استفاده میکنم

محمد سلیم آبادی
یک شنبه 26 خرداد 1392, 15:54 عصر
چرا میشه.
به جای جدول CTE که در کد قبلی آمده شما باید یک جدول ایجاد کنید و داده های متوالی 1 تا N رو توش ذخیره داشته باشین که هر موقع نیاز شد مثل الان ازش استفاده کنید تا مجبور نشید در هر دفعه این اعداد را تولید کنید...