PDA

View Full Version : تقاضای راهکار برای تعداد فیلد داینامیک در sql2000



kamalian1347
یک شنبه 19 دی 1389, 08:37 صبح
سلام دوستان
من یه جدول دارم که فیلدهای اون شامل مجموع عملکرد یه سری شرکتهاست.(عملکرد مثبت و منفی و...)
این شرکتها خود یه جدول دارند که شامل یه سری فیلد همانند آدرس و... میباشند.
مشکل من اینه که تعداد این شرکتها میتونند قابل تغییر باشند و بنابر این جدول اولی تعداد فیلدهاش مشخص نیست.البته هیچ اصراری به حفظ جدول اولی نمیباشدو میتواند در هنگام اجرای این گزارشگیری تشکیل بشه.
سوال من : راهکار چیه؟

حمیدرضاصادقیان
یک شنبه 19 دی 1389, 09:47 صبح
سلام.
خوب اگر تعداد شرکتها قابل تغییر هست با جدول اول چه رابطه ای دارند؟ یعنی مثلا هر شرکتی برای خودش یک سری فیلدهای خاص داره؟

kamalian1347
دوشنبه 20 دی 1389, 07:55 صبح
سلام.
خوب اگر تعداد شرکتها قابل تغییر هست با جدول اول چه رابطه ای دارند؟ یعنی مثلا هر شرکتی برای خودش یک سری فیلدهای خاص داره؟


ضمن تشکر از توجه شما فکر کنم مسئله رو درست توضیح ندادم
من 2 جدول با مشخصات زیر دارم
1- جدول 1 که شامل فیلدهای (شرکت نصاب - کد آبگرمکن منصوبه و کد سفارش و .... ) میباشد.و تعداد شرکتهای نصاب قابل تغییر است.
2- جدول 2 که شامل فیلدهای (کد آبگرمکن - نوع آبگرمکن) میباشد.
3- جدول 3 که شامل فیلدهای (کد نصاب - اسم شرکت نصاب - آدرس و ....)
* نکته اول - در هر رکورد جدول 1 , هر نصاب فقط یک نوع آبگرمکن نصب میکند(در صورت نصب نوع ویا تعداد دیگر آبگرمکن با یک رکورد جدید و در قالب سفارش جدید ثبت میشود)
* نکته دوم - در جدول2 انواع آبگرمکن ها میتوانند کم و یا زیاد شوند.
حال مشکل من:
من میخواهم یک گزارش کلی از شرکت های نصاب داشته باشم که در آن هر رکورد شامل : تعداد سفارش پذیرفته شده هر شرکت - تعداد نصب آ« شرکت- مجموع آبگرمکن نوع 1 نصب شده آن شرکت- مجوع آبگرمکن نصب شده نوع 2 آن شرکت و نوع 3 و.... باشد.
حال اگر من بخوام یک جدول داشته باشم که در هنگام گزارش گیری با بایند کردن اطلاعات جدول 1 و با توجه به اینکه در هر رکورد کد آبگرمکن منصوبه موجود میباشد و میتوان با توجه کد نصاب و کد آبگرمکن مربوطه اطلاعات درخواستی رو بدست آورد . اما مشکل اینجاست که تعداد انواع آبگرمکن متغییر است و اگه قرار باشد برای هر نوع آبگرمکن یک فیلد مجموع در این جدول فرضی در نظر بگیریم آنوقت مجبور میشویم یک ماکزیمم تعداد فیلد در نظر بگیریم(مثلا فرض کنیم حداکثر 5 نوع آبگرمکن میتونه باشه و ما هم 5 فیلد مجموع نوع آبگرمکن در جدول در نظر بگیریم) که این منطقی نیست.آیا میتوان به نوعی جدول رو در هنگام نیاز ایجاد نمود بطوریکه تعداد فیلدهای مجموع مورد نیازو بتونه از جدول 2 استخراج کنه؟

شاید استفاده از GROUP BY در دستور SELECT بتونه کار منو بدون استفاده از جدول انجام بده اما من نمیدونم چگونه . میشه یه راهکار به من بدین؟
اگه با دستور SELECT میشه لطفا عین دستورو بنویسین ممنون میشم . فقط اینو میدونم که اولین group by دستور باید نام نصاب باشه.
ممنون

حمیدرضاصادقیان
دوشنبه 20 دی 1389, 11:15 صبح
سلام.
همونطوری که خودتو هم گفتید نیازی به استفاده از جدول نیست و با Group By به راحتی میشه گزارش مربوطه رو گرفت.
مثلا به کد زیر توجه کنید.



Select T1.CompanyName,Sum(T1.Tedad) AS TedadNasb,T2.KalaNAme From
Table1 T1
Inner Join T2
On T1.CodeKala=T2.CodeKala
Group By T1.CompanyName,T2.KalaName

در این کد من به صورت فرضی نام شرکت و جمع فروش کالا و نام کالا رو نمایش دادم و در قسمت Group By مشخص کردم که این جمع باید براساس نام شرکت و نام کالا باشد.

kamalian1347
دوشنبه 20 دی 1389, 14:10 عصر
دوست عزیز ضمن تشکر. تا اینجای کار مشکلی ندارم. مشکل من اینه که انتخابم خیلی پیچیده تر از یک گروپ بندیه.
در مثال بالایی که ذکر کردم .من اولین گروپ رو شرکتای نصاب گذاشتم. وقتیکه در گروپ 2 میام نوع آبگرمکنو میزارم اونوقت میاد اطلاعات هر شرکت نصاب رو به چند رکورد تجزیه میکنه در حالی که من میخوام تمامی اطلاعات هر شرکت تو یه رکورد باشه.
select tblnasab.companynasab , count(tblnasab.companynasab)
group by tblnasab.companynasab
تا اینجای کار درسته . و میاد اسم نصاب و تعداد عملکردشو بصورت جمع بندی میده.مثلا میگه شرکت فلانی 12 نصب داشته. حالا میخوا م بگه شرکت فلانی 12 نصب داشته 8 تا حرارتی-2 گازی - 2 برقی .
برای اینکار میام بعد از گروپ اولی یه گروپ دیگه میزارم که کد نوع آبگرمکنه . گزارش درسته . اما تفکیکی میده . یعنی میگه
1- شرکت فلانی 8 نصب 8 حرارتی
2- شرکت فلانی 2 نصب 2 گازی
3- شرکت فلانی 2 نصب 2 برقی


SELECT رو پطوری بنویسم؟

حمیدرضاصادقیان
دوشنبه 20 دی 1389, 14:55 عصر
خوب حالا قضیه مقداری فرق کرد.
در این دومقاله توضیحات کامل داده شده است فکر کنم با اینها مشکل شما مرتفع شود.
گزارش گیری آماری (http://www.30sharp.com/ShowArticle.aspx?nid=13&did=214&AuthorID=11)
الحاق سطرهای جدول کنار هم (http://www.30sharp.com/ShowArticle.aspx?nid=13&did=214&AuthorID=11)