View Full Version : مشکل با کوئری در دیتاست
meysam jahedi
دوشنبه 15 آذر 1395, 13:08 عصر
سلام
میخوام با GROUP BY تعداد رکوردهای هر کاربر (ستون usernamee) رو بین دو تاریخ دسته بندی و تو یه ستون (به نام ستون تعداد ) نشون بدم. و تو یه ستون دیگه مجموع کل رکوردهای هرکاربر رو تا اون تاریخ هم زمان نشون بدم.
حالا مشکلم اینجاست که شرط قسمت where برای هر دو قسمت متفاوت میشه و من نیاز دارم تا همه این عملیات تو یه کوئری انجام بشه و یکجا جواب بگیرم.
با دستورات زیر ، تعداد رکوردهای هر کاربر بین دو تاریخ رو تو ستون "تعداد " نشون میدم :
SELECT usernamee, COUNT(companyName) AS تعداد
FROM company
WHERE (dateuser >= ?) AND (dateuser <= ?)
GROUP BY usernamee
حالا چجوری میتونم این کوئری رو تغییر بدم تا علاوه بر این ، یه ستون سومی به نام "تعداد کل " داشته باشم که تعداد رکوردهای هرکاربر رو تا قبل از یک تاریخ مشخص نشون بده ( یعنی (dateuser <= ?) )
meysam jahedi
سه شنبه 16 آذر 1395, 09:41 صبح
هیچکس نیست یه جوابی بده:گریه:
gilsoft
چهارشنبه 17 آذر 1395, 06:32 صبح
هیچکس نیست یه جوابی بده:گریه:
سلام دوست عزیز
باید یه نمونه از گزارشی ( منظور نتیجه گزارش ) که میخوای رو با Excel درست کنی و اینجا بذاری .. و یه چندتا رکورد از جدول company هم جهت نمونه ( که بشه باهاش کار کرد ) بذاری ...
منتظریم .....
meysam jahedi
چهارشنبه 17 آذر 1395, 10:02 صبح
سلام دوست عزیز
باید یه نمونه از گزارشی ( منظور نتیجه گزارش ) که میخوای رو با Excel درست کنی و اینجا بذاری .. و یه چندتا رکورد از جدول company هم جهت نمونه ( که بشه باهاش کار کرد ) بذاری ...
منتظریم .....
طبق عکس های زیر میخوام اسم کاربرا (usernamee)دسته بندی بشه و بر اساس فیلد dateuser (یعنی تاریخ) ، سه تا ستون رو بگیرم " یه ستون نام کاربر، یه ستون تعداد رکوردهای هرکدوم از کاربرا بین دوتا تاریخ ، ستون سوم هم تعداد رکوردهاشون تا قبل از یک تاریخ مشخص(که توسط کاربر به صورت دستی وارد میشه)
کوئری رو تو دیتاست برنامه مینویسم و بعدا فراخوانی میکنم.
meysam jahedi
پنج شنبه 18 آذر 1395, 09:21 صبح
طبق عکس های زیر میخوام اسم کاربرا (usernamee)دسته بندی بشه و بر اساس فیلد dateuser (یعنی تاریخ) ، سه تا ستون رو بگیرم " یه ستون نام کاربر، یه ستون تعداد رکوردهای هرکدوم از کاربرا بین دوتا تاریخ ، ستون سوم هم تعداد رکوردهاشون تا قبل از یک تاریخ مشخص(که توسط کاربر به صورت دستی وارد میشه)
کوئری رو تو دیتاست برنامه مینویسم و بعدا فراخوانی میکنم.
دوستان یعنی تا حالا کسی همچین کوئری ای ننوشته؟
gilsoft
پنج شنبه 18 آذر 1395, 18:57 عصر
دوستان یعنی تا حالا کسی همچین کوئری ای ننوشته؟
دوست عزیز یه کم فرصت بدی .. حلش میکنم .....
meysam jahedi
شنبه 20 آذر 1395, 09:11 صبح
دوست عزیز یه کم فرصت بدی .. حلش میکنم .....
سپاس فراوان
meysam jahedi
سه شنبه 23 آذر 1395, 09:11 صبح
طبق عکس های زیر میخوام اسم کاربرا (usernamee)دسته بندی بشه و بر اساس فیلد dateuser (یعنی تاریخ) ، سه تا ستون رو بگیرم " یه ستون نام کاربر، یه ستون تعداد رکوردهای هرکدوم از کاربرا بین دوتا تاریخ ، ستون سوم هم تعداد رکوردهاشون تا قبل از یک تاریخ مشخص(که توسط کاربر به صورت دستی وارد میشه)
کوئری رو تو دیتاست برنامه مینویسم و بعدا فراخوانی میکنم.
به اینجا هم منتقل شد پستم ، هیچکس آخر جواب نداد .. یعنی راه حلی نداره
codedeveloper
سه شنبه 23 آذر 1395, 14:36 عصر
SELECT usernamee, COUNT(companyName) AS تعداد, (select COUNT(*) from company c2 where c2.username=c1.username)
FROM company c1
WHERE (dateuser >= ?) AND (dateuser <= ?)
GROUP BY usernamee
meysam jahedi
چهارشنبه 24 آذر 1395, 08:44 صبح
SELECT usernamee, COUNT(companyName) AS تعداد, (select COUNT(*) from company c2 where c2.username=c1.username)
FROM company c1
WHERE (dateuser >= ?) AND (dateuser <= ?)
GROUP BY usernamee
ممنون ، اما موقع اجرا تو دیتاست کلا خطا میده و فکر نکنم چیزی که تو عکسهای پست های قبل خواسته بودم رو جواب بده!
codedeveloper
چهارشنبه 24 آذر 1395, 16:24 عصر
ممنون ، اما موقع اجرا تو دیتاست کلا خطا میده و فکر نکنم چیزی که تو عکسهای پست های قبل خواسته بودم رو جواب بده!
خوب دوست عزیز اول متن خطا رو میذاشتی میدیدیم چیه!!!
بعدشم برای بخش دوم کار فقط کافیه یک شرط به subQuery اضافه کنی تا از یک تاریخ به قبل رو بیاره...
meysam jahedi
پنج شنبه 25 آذر 1395, 08:31 صبح
خوب دوست عزیز اول متن خطا رو میذاشتی میدیدیم چیه!!!
بعدشم برای بخش دوم کار فقط کافیه یک شرط به subQuery اضافه کنی تا از یک تاریخ به قبل رو بیاره...
بعدشم برای بخش دوم کار فقط کافیه یک شرط به subQuery اضافه کنی تا از یک تاریخ به قبل رو بیاره...
ممنون میشم این قسمتو هم بگین
codedeveloper
پنج شنبه 25 آذر 1395, 13:41 عصر
SELECT username, COUNT(companyName) AS BetweenCount,(SELECT COUNT(*) FROM company c2 where c2.username=c1.username and dateuser<=?)
FROM company
WHERE (dateuser >= ?) AND (dateuser <= ?)
GROUP BY usernamee
اینطوری بنویسید حل میشه
meysam jahedi
شنبه 27 آذر 1395, 15:19 عصر
SELECT username, COUNT(companyName) AS BetweenCount,(SELECT COUNT(*) FROM company c2 where c2.username=c1.username and dateuser<=?)
FROM company
WHERE (dateuser >= ?) AND (dateuser <= ?)
GROUP BY usernamee
اینطوری بنویسید حل میشه
با این روش تست میکنم ، خطای زیر رو میده
meysam jahedi
چهارشنبه 01 دی 1395, 08:42 صبح
دوستان راه حلی ندارید؟
codedeveloper
چهارشنبه 01 دی 1395, 11:31 صبح
دوست عزیز من خودم امتحان کردم درست بود
143841
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.