PDA

View Full Version : سوال: با توجه به خروجی زیر سلکت رو چه طوری بنویسم



shocraneh
یک شنبه 30 مرداد 1390, 13:59 عصر
با سلام . من یه جدول تو اسکیوال به این شکل دارم هر رکورد رو داخل یه پرانتز گذاشتم
(نوع تعداد)(1 3) (1 5) (2 7)(3 3) (2 1)
چی کار کنم که خروجی به این شکل بشه البته داخل اسکیوال (نوع تعداد)(1 8 )(2 8) (3 3)


یعنی مقادیر تکراری نوع رو با هم جمع کنه ( در واقع غیر تکراری ها را بزنه اما تکراری ها رو به صورت جمع در یک رکورد بزنه)
من خودم این قضیه رو حل کردم اما مجبور شدم یه بار داده ها رو بیارم تو دات نت ، که به نظرم جالب نیومد . سوال من اینه چی کار کنم داخل خود اسکیوال خروجی نهایی رو بگیرم ودیگه از دات نت استفاده نشه
کاری که من کردم : رکوردها رو( گروه بندی کردم تا ترتیب داته باشه) تو دات نت بررسی کردم غیر تکراری ها رو در یه جدول دیگه ثبت و اونایی که تکراری بودند ابتدا جمع و سپس ویرایش می کردم

سوال بعدی : این امکان وجود داره که موقع سلکت از یه جدول در دستور کیس شرطی بزاری به شکلی که از دو فیلد استفاده شده باشه .مثلا کد زیر که خطا داره


select General,Type,,Credit,Remain=
CASE Type
WHEN N'بدون مانده'THEN(Remain-Credit)

ELSE N'نامعلوم'
END
from T3

sara213
یک شنبه 30 مرداد 1390, 17:17 عصر
سلام
شما احتمالا هر بار که نوع و تعداد در نرم افزارتون وارد میشه از دستور insertاستفاده میکنید .و مشکلتون به همین دلیله.به نظر من این کار رو انجام بدید:
هر بار که اطلاعاتی وارد میشه در پایگاه داده select کنید که ایا این نوع در جدولتون هست یا نه.اگر بود تعداد اون رو در یک متغیر ذخیره کنید با مقدار جدید جمع کنید و با استفاده از دستور updateجدولتون رو بروز رسانی کنید.اما گر این نوع در جدولتون نباشه باید insert کنید .
به نظر من اگر انواعتون از قبل معلومه اونها رو ابتدا در جدولتون وارد کنید که همیشه از دستور update استفاده کنید

shocraneh
دوشنبه 31 مرداد 1390, 09:42 صبح
نه دوست من لازمه که جداگانه ثبت بشه .فیلدهام اینها نیستند من به عنوان نمونه این مثال رو زدم به هر جهت مجبورم جداجدا ثبت کنم . اما برای عملیات انتهایی لازم دارم که مجموع بگیرم

sara213
سه شنبه 01 شهریور 1390, 02:17 صبح
فکر میکنم که لازم باشه بیشتر توضیح بدید

AmirAmiri
سه شنبه 01 شهریور 1390, 04:02 صبح
سلام دوست عزیز.
فکر میکنم بهتر بود تو تالار SQL server مطرح میکردی. حالا که اینجا مطرح کردی، یکم بیشتر توضیح بده چون هیچی از سوالت متوجه نشدم.

gilas1368
سه شنبه 01 شهریور 1390, 04:58 صبح
از نوشته شما من اينو فهميدم كه مي خوايد مقادير تكراري داخل فيلد نوع رو با هم جمع بزنيد،براي اينكار

select sum(feild name)from table name where feild name=1

براي قسمت دوم سوالتون هم


select * from table name where feild name1=مقدار مورد نظر and feild name2=مقدار مورد نظر

اميدوارم تونسته باشم سؤالاتتون رو جواب بدم،اما اگه واضحتر توضيح بدين قطعا دوستان بهتر كمكتون خواهند كرد


سربلند باشيد

shocraneh
سه شنبه 01 شهریور 1390, 09:16 صبح
من سوالم واضحه نمی دونم چرا دوستان متوجه منظورم نمیشن با این حال ویرایشش کردم ( من تا به حال از بحث جداول موقت و کرسر ها استفاده نکردم ، احیانا با اونا حل نمیشه؟؟)