PDA

View Full Version : سوال: نمودار در دستور اس کیو ال



navid1n2000
یک شنبه 17 مرداد 1389, 13:11 عصر
من یک جدول دارم که اسمش جدول اعضاست
می خوام یه نمودار بکشم بر اساس سال تاریخ عضویت
دستور اس کیو الشو بلد نیستم
میشه کمکم کنین؟؟>>>>

Mani_rf
یک شنبه 17 مرداد 1389, 19:14 عصر
نمودرا گرافیکی (Chart) لازم داری؟

حجتی نیا
یک شنبه 17 مرداد 1389, 19:21 عصر
تا اینجا میدونم با کریستال میشه اینکارو کرد .. تو تاپیک کریستال مطرح کنی زودتر به جواب میرسی
در کل سوال خوبیه .. خودمم در آینده باید ازش استفاده کنم

navid1n2000
یک شنبه 17 مرداد 1389, 20:34 عصر
مشکل من قسمت کریستال نیست
مشکل من دستور sql هستش
نمی دونم با چه دستوری می تونم دیتا ستشو بسازم
که بگه اعضایی که توی 1373 عضو شدن اینقدر و . . .
این مشکل منه
میدونم با تابع COUNT هست

sinashahab
یک شنبه 17 مرداد 1389, 20:44 عصر
می تونی با کلاس dataview کار کنی .
اول با فیلتر سال رو پیدا کن و بعدش با خاصیت count تعداد رو پیدا کن !

اگه خواستی کدشو بنویسم .

navid1n2000
یک شنبه 17 مرداد 1389, 23:39 عصر
می تونی با کلاس dataview کار کنی .
اول با فیلتر سال رو پیدا کن و بعدش با خاصیت count تعداد رو پیدا کن !

اگه خواستی کدشو بنویسم .
ممنون میشم کمکم کنی
فقط یه سوال
با دستورات sql نمیشه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟

حجتی نیا
یک شنبه 17 مرداد 1389, 23:51 عصر
select count(sale_ozviat) from table group by sale_ozviate
این کوئری تعداد همه افراد رو در سالهایی که در دیتابیس است میشمره .. اگه خواستی براساس یه سال خاص محاسبه کنی ، یه شرط where بهش اضافه کن ..

navid1n2000
دوشنبه 18 مرداد 1389, 09:05 صبح
select count(sale_ozviat) from table group by sale_ozviate
این کوئری تعداد همه افراد رو در سالهایی که در دیتابیس است میشمره .. اگه خواستی براساس یه سال خاص محاسبه کنی ، یه شرط where بهش اضافه کن ..
آخه من به تفکیک میخوام
مثلا سال 73 این تعداد
سال 74 این تعداد
سال 75 این تعداد
و . . .
راه و روش این چطوریه ؟

حجتی نیا
دوشنبه 18 مرداد 1389, 11:01 صبح
آخه من به تفکیک میخوام
مثلا سال 73 این تعداد
سال 74 این تعداد
سال 75 این تعداد
و . . .
راه و روش این چطوریه ؟
group by واسه همینه دیگه، مثلا اگه 10 تا 75 داشته باشی، 8تا 73 ،در نتیجه مینویسه : 75 --> 10
73 --> 8

navid1n2000
دوشنبه 18 مرداد 1389, 13:36 عصر
group by واسه همینه دیگه، مثلا اگه 10 تا 75 داشته باشی، 8تا 73 ،در نتیجه مینویسه : 75 --> 10
73 --> 8
ولی من این دستور رو اجرا کردم
این خروجی رو نداد
البته تاریخ ها به این صورت ذخیره شدند مثلا 17/05/1373
من میخوام خروجی براساس کل تاریخ نباشه
بر اساس سال باشه

حجتی نیا
دوشنبه 18 مرداد 1389, 15:19 عصر
البته تاریخ ها به این صورت ذخیره شدند مثلا 17/05/1373

از اول میگفتی .. فک نکنم بشه مستقیم از بانک فهمید که سالش چیه اما یه راهی به ذهنم رسید اینه که شما ابتدا همه اون فیلد رو از دیتابیس بخونی و توی مثلایه آرایه بریزی، بعدش از تو آرایه، 4رقم اول رو خارج کنی و تعداد اونا رو دربیاری (راهش ممکنه منطقی نباشه ولی ممکنه)
منتظر نظر دوستان هستیم ...

sinashahab
دوشنبه 18 مرداد 1389, 22:15 عصر
یه فیلد مخصوص به جز تاریخ دقیق (1389/05/10) بساز که توش فقط سال رو بنویسه .(1342).
بعدش با یه حلقه و یه لیست آرایه ای و دستورات sql می تونی اطلاعات هر سال رو به دست بیاری .

من زیاد روش فکر نکردم ولی باید اینطوری باشه .

list<int> list = new list<string>[]

باید داخل تگ ها محاسبه ی اولیت سال تا الان رو بزاری
بعدش با یه حلقه ی تو در تو میشه راحت کارتو راه بندازی

این کار شدنی هست و من توی پروژه ای توش کار می کنم انجامش میدم.
حیف که پروژه ام خیلی بزرگه:لبخند: وگرنه می گذاشتمش :قلب:

navid1n2000
سه شنبه 19 مرداد 1389, 10:38 صبح
یه فیلد مخصوص به جز تاریخ دقیق (1389/05/10) بساز که توش فقط سال رو بنویسه .(1342).
بعدش با یه حلقه و یه لیست آرایه ای و دستورات sql می تونی اطلاعات هر سال رو به دست بیاری .

من زیاد روش فکر نکردم ولی باید اینطوری باشه .

list<int> list = new list<string>[]

باید داخل تگ ها محاسبه ی اولیت سال تا الان رو بزاری
بعدش با یه حلقه ی تو در تو میشه راحت کارتو راه بندازی

این کار شدنی هست و من توی پروژه ای توش کار می کنم انجامش میدم.
حیف که پروژه ام خیلی بزرگه:لبخند: وگرنه می گذاشتمش :قلب:
اینایی که شما گفتین درست
اما من این اطلاعاتو برای رسم نمودار توی کریستال ریپورت می خوام
و توی کریستال ریپورت برای رسم نمودار دیتاست می خوام نه عدد
یعنی باید یک جدول بانک اطلاعاتتی بهش بدم و بگم بر اساس این اطلاعات نمودار بده

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

navid1n2000
سه شنبه 19 مرداد 1389, 12:03 عصر
ولی قبول کن روش زمانبره
من مطمئنم باید با دستورات sql این مشکل حل یشه

حجتی نیا
سه شنبه 19 مرداد 1389, 12:51 عصر
یه چیزی پیدا کردم ردییییییییییییف ..
http://www.sqlbook.com/SQL/SQL-Substring-Function-22.aspx
خلاصش این میشه :
SELECT SUBSTRING('1389/03/25', 0, 3) As UKMonth

behbahb
سه شنبه 19 مرداد 1389, 13:56 عصر
select (sale_ozviat),sum(tadad,ozo)as tadad from table group by sale_ozviate

navid1n2000
چهارشنبه 20 مرداد 1389, 12:05 عصر
من این دستور sql رو امتحان کردم

SELECT SUBSTRING(TarikhOzviat, 3, 2) AS UKMonth
FROM dbo.Ozu
GROUP BY TarikhOzviat
و خروجی که داد رو توی عکس می تونین ببینین
حالا من می خوام بگه سال 73 اینقدر سال 74 اینقدر و . . .
الان فقط تعداد رو می نویسه و سال رو نمی نویسه

حجتی نیا
چهارشنبه 20 مرداد 1389, 12:19 عصر
من این دستور sql رو امتحان کردم

SELECT SUBSTRING(TarikhOzviat, 3, 2) AS UKMonth
FROM dbo.Ozu
GROUP BY TarikhOzviat
و خروجی که داد رو توی عکس می تونین ببینین
حالا من می خوام بگه سال 73 اینقدر سال 74 اینقدر و . . .
الان فقط تعداد رو می نویسه و سال رو نمی نویسه



SELECT SUBSTRING(TarikhOzviat, 3, 2) AS UKMonth, count(SUBSTRING(TarikhOzviat, 3, 2)) as Count
FROM dbo.Ozu
GROUP BY TarikhOzviat

navid1n2000
چهارشنبه 20 مرداد 1389, 13:56 عصر
SELECT SUBSTRING(TarikhOzviat, 3, 2) AS UKMonth, count(SUBSTRING(TarikhOzviat, 3, 2)) as Count
FROM dbo.Ozu
GROUP BY TarikhOzviat
اجرا کردم دستورتون رو
اینم خروجیشه توی عکس



اگه ببینین برای سال 73 چند تا ردیف باز کرده
چون تاریخا اینجورین . مثلا 05/03/1373
و این همه ی 73 هارو با هم نگرفته
چاره چیه

C Sharp
چهارشنبه 20 مرداد 1389, 14:14 عصر
SELECT SUBSTRING(TarikhOzviat, 5, 4) AS year, COUNT(*) AS num
FROM Ozviat
GROUP BY SUBSTRING(TarikhOzviat, 5, 4)


اینو امتحان کن

حجتی نیا
چهارشنبه 20 مرداد 1389, 14:37 عصر
اجرا کردم دستورتون رو
اینم خروجیشه توی عکس


اگه ببینین برای سال 73 چند تا ردیف باز کرده
چون تاریخا اینجورین . مثلا 05/03/1373
و این همه ی 73 هارو با هم نگرفته

چاره چیه



select substring(date,1,4),count(substring(date,1,4)) from table
group by substring(date,1,4)
تو برنامه منم تاریخ همین شکلیه .. این کوئری و اینم نتیجش(عکس) ..

navid1n2000
چهارشنبه 20 مرداد 1389, 18:13 عصر
ممنون
همین جوایم یود
خیلی زحمت کشیدین
سپاس:بوس: