PDA

View Full Version : مشگل با نوشتن یک query



ali_mnkt
شنبه 01 بهمن 1390, 14:32 عصر
با سلام

فرض کنید یک جدول ثبت اطلاعات فروش محصولات با فیلد های زیر داشته باشیم

orderid , fid, pid , number

orderid : شماره ردیف
fid :شماره فاکتور
pid : کد محصول
number : تعداد سفارش داده شده

خوب دوستان query زیر رو چطور باید بنویسیم :

" کد محصول و شماره فاکتوری را نشان دهید که آن محصول در آن فاکتور کمتری تعداد سفارش رو داشته باشد

mohdeL
شنبه 01 بهمن 1390, 15:09 عصر
با سلام
select top1 pid,fid,number from table_name where pid=pid_mahsol order by number
توسط این دستور شماره محصول داده میشود سپس کل رکوردهای حاوی این محصول استخراج و براساس فیلد number مرتب میشود سپس اولین رکورد که دارای کمترین تعداد است استخراج میشود

ali_mnkt
شنبه 01 بهمن 1390, 18:04 عصر
با سلام
select top1 pid,fid,number from table_name where pid=pid_mahsol order by number
توسط این دستور شماره محصول داده میشود سپس کل رکوردهای حاوی این محصول استخراج و براساس فیلد number مرتب میشود سپس اولین رکورد که دارای کمترین تعداد است استخراج میشود

مرسی از راهنماییت من با کمک شما و با یک مقدار تغییرات query زیر رو بدست آوردم که درستم کار می کنه


select fid,pid,number
from [order] o1
where pid=(select top 1 pid
from [order] o2
where o1.fid=o2.fid
order by number )


اما این query فقط برای زمانی درسته که تعداد سفارش کالاها در هر فاکتور با هم فرق داشته باشند اما اگر در یک فاکتور از چند کالا مقادیر یکسانی سفارش داده شود اون وقت query چگونه باید تغییر پیدا کند تا تعداد سفارشات یکسان در هر فاکتور رو هم نشان بدهد ؟

Galawij
شنبه 01 بهمن 1390, 19:28 عصر
سلام،
به این صورت:
Select Pid,Fid From YourTable Where Number=(Select MIN(Number) From YourTable) AND Fid=@YourFid

ali_mnkt
یک شنبه 02 بهمن 1390, 12:44 عصر
سلام،
به این صورت:
Select Pid,Fid From YourTable Where Number=(Select MIN(Number) From YourTable) AND Fid=@YourFid

دوست عزیز yourfid@ فیلد مربوط به کدوم جدوله ؟ (خطا داره )

nedata
یک شنبه 02 بهمن 1390, 13:25 عصر
Select Fid,min(cnt) From (Select Fid,pid,sum(number) As cnt From tableName group by fid,pid) a group by fid

Galawij
یک شنبه 02 بهمن 1390, 14:17 عصر
دوست عزیز yourfid@ فیلد مربوط به کدوم جدوله ؟ (خطا داره )
مربوط به جدول خاصی نیست(پارامتر ارسالی هست)، حدس زدم شاید بخواید بر حسب یک فاکتور خاص نتیجه را بدست بیارید، می تونید حذفش کنید.