ورود

View Full Version : کمک در مورد دستورات SQL



In_Chan_Nafar
جمعه 27 خرداد 1384, 23:31 عصر
من می خوام اطلاعات رو از جدول Table_Info طوری استخراج کنم که اطلاعات View_Info رو به دست بیارم.(مانند تصویر)
در این جداول کد بندی من به این شکله که از سمت چپ 2 کاراکتر برای انبار، 2 کاراکتر برای گروه اصلی کالاها مثلا اینجا کارت اینترنته، 2 کاراکتر برای زیر گروه که اینجا کارت اینترنت سهنده و 4 کاراکتر برای خود کالا می باشد.
ممنون میشم اگه راهنمایی کنین. :گیج:

AminSobati
شنبه 28 خرداد 1384, 23:32 عصر
دوست عزیزم،
در Books Online عبارت pivot example رو جستجو کنین و در نتیجه، Cross-Tab Reports رو ببینین. همچنین، در مورد Pivot باید بیشتر مطالعه کنین. اگر قصد دارید به طور وسیع از این امکانات SQL Server استفاده کنین، میبایست از OLAP بهره بگیرین.

karimh
دوشنبه 30 خرداد 1384, 18:36 عصر
امین خان از دستور substring نیز میتوان استفاده کرد؟ به طوری که مثلا سه کاراکتر اول را تحت یک فیلد به عنوان انبار و الی آخر ..........

البته دوست عزیز ساختار کدینگ کالای مورد نظر اشکال دارد .کد کالا نباید به محل فیزیکی
(انبار) وابسته باشد...

AminSobati
دوشنبه 30 خرداد 1384, 23:38 عصر
کریم جان،
نیاز دوستمون اینه که سطر ها رو به ستون تبدیل کنن، substring چه کمکی در این مورد میتونه انجام بده؟

karimh
سه شنبه 31 خرداد 1384, 01:23 صبح
با سلام
برداشت من از سوال دوستمون این بود که احتمالا نیاز به ساخت گزارشی دارند .
حال با توجه به اینکه ما در سطر آخر کد نهایی کالا رو داریم شاید بتونیم هر کد را با دستور substring به تعداد ستونی که مورد نظر است تبدیل کنیم ...یعنی در یک ستون یک بخش از کد کالا به عنوان نام انبار ...بخش دوم کد کالا به عنوان گروه اصلی ....بخش سوم که گروه فرعی کالا را نمایش می دهد و بخش آخر که خصوصیت مورد نظر کالا رو تشکیل میده .......
حال ما چهار ستون داریم که اطلاعات خودشون رو از کد کالا گرفته اند ............
منظور من این بود .
البته هنوز امتحان نکردم ببینم عملیه یا نه ...هر چند که اگه شما بگین نیست نیاز به امتحان کردنش هم از بین میره...... :D

JavanSoft
سه شنبه 31 خرداد 1384, 15:31 عصر
اگر همانگونه که مهندس ثباتی فرمودند جستجو کنید به عین همین مثال می رسید

karimh
سه شنبه 31 خرداد 1384, 17:36 عصر
یعنی راه من اصلا چواب نمیده؟ :cry:

AminSobati
سه شنبه 31 خرداد 1384, 18:18 عصر
کریم جان مسئله اینجاست که نگهداری اطلاعات طبق شکل اول انجام میشه و فقط Query باید قابلیت رو بده که به شکل دوم نمایش بدیم. یعنی قصد این نیست که در ساختار ذخیره سازی اطلاعات تغییری ایجاد بشه

In_Chan_Nafar
پنج شنبه 02 تیر 1384, 22:36 عصر
با تشکر از مهندس ثباتی

ما این مثال رو خوندیم ولی خوب یکمی (یعنی واسه ما سخته چون زیاد با دستورات حرفه ای کار نکردیم)
سخته حالا اگه می شه یه مثال هم اساتید بذارن تا ما بیستر فیض ببریم

این رو هم بگم که ما قبلا این کارو انجام دادیم آقا کریم ولی نتیجه نداده
با تشکر :flower: :flower: :flower: :flower: :flower: :flower: :flower:

karimh
شنبه 04 تیر 1384, 22:16 عصر
سلام این چند نفر
اما من این دستور رو استفاده کرئم و جواب گرفتم.
یه گزارشی می خواستم تحت Cryatal Report بسازم و این دستور کاملا جواب داد .
شما هم که خودتون اخر کریستال ریپورت هستید .... :flower:
در نهایت هر راه حلی که امین خان بگه بهترین راهه ..... :wink:

یحتمل من مطلب رو رو بد فهمیدم ...ببخشید.....
:oops:

In_Chan_Nafar
دوشنبه 06 تیر 1384, 00:33 صبح
سلام

آقا کریم می شه اون دستور رو اینجا بذاری

با تشکر (فرید)

In_Chan_Nafar
دوشنبه 06 تیر 1384, 22:42 عصر
آقا کریم من منتظر هستم ها (حتی PM هم زدم ولی شما مثله اینکه سرتون خیلی شلوغه :mrgreen: )

باز هم متشکر :flower:

karimh
سه شنبه 07 تیر 1384, 00:59 صبح
سلام دوستان
بابت دیر جواب دادنم معذرت میخوام .....تحویل پروژه داشتم شب و روزو ازم گرفته بود .....اما PM شما به دستم نرسیده ..وگرنه حتما زودتر جواب میدادم ...به هر حال بازم معذرت می خوام
دستوری که من فکر می کردم به دردتون بخوره با این پیش فرض بود که کد کالا رو بصورت در جدول شناسنامه کالا وارد میکنین (ساختار اکثر جداول کالا در بانک های مختلفی که من دیده بودم این طوری بود ...) اگه فرض کنیم شما یه رکورد به صورت زیر داشته باشی میتونیم این گزارشو ازش بگیریم :part=1101010001


select
case when (substring(code,1,2)='11' then 'انبار 1' else 'Unknown StockName' end as Stockname,
case when (substring(code,3,2)='01' then 'کارت اینترنت' else 'Unknown PrimaryGroup' end as PrimaryGroup,
case when (substring(code,3,2)='01' then 'کارت سهند' else 'Unknown SecondaryGroup' end as SecondaryGroup,
case when (substring(code,3,2)='01' then '10 ساعته' else 'Unknown PartName' end as PartName
from inv.part


اما امین خان درست میگه کار شما با Pivote Table حل میشه
دستور بالا وقتی بدرد میخوره که تعداد رکورد ها محدود باشه ..من این دستورو واسه طراحی یه نوع فاکتور فروش خاص استفاده کردم که مقادیر متغیرش محدود بود ....و اتفاقا خیلی هم کمکم کرد

اما یه چیزی بچه ها .....با این ساختار جداول احتمالا بعدا واسه گزارش گیری به مشکلات بیشتری بر میخورین ها ......اگه جدول گروهبندی کالا رو از جدول مشخصات کالا جدا کنین راحت تر میشه گزارش ازش گرفت ...