دستور count(id=) یک عدد در sql
با سلام و خسته نباشید
برای بدست آوردن نتیجه دستور count(id)>10 توی sql چیکار کنم
می خواهم مشخص کنم مثلا: کاربرانی که بیشتر از ده بار به سایت وارد شده اند کیان هستند!
کد HTML:
select id from user where count(login)>10
همچین چیزی امکان داره؟
پاسخ : دستور count(id=) یک عدد در sql
ابتدا باید ورود و خروج های یوزرها در تیبل شما ثبت شده باشند که بتونید همچین کوئری رو اجرا کنید در غیر اینصورت پاسخی دریافت نخواهد شد
این درخواست برای چه سیستمی هست ؟
پاسخ : دستور count(id=) یک عدد در sql
نقل قول:
نوشته اصلی توسط
OMIDTU5
ابتدا باید ورود و خروج های یوزرها در تیبل شما ثبت شده باشند که بتونید همچین کوئری رو اجرا کنید در غیر اینصورت پاسخی دریافت نخواهد شد
این درخواست برای چه سیستمی هست ؟
ببخشید یعنی چی برای چه سیستمی است؟ دستور برای sql است.
پاسخ : دستور count(id=) یک عدد در sql
نقل قول:
نوشته اصلی توسط
Marshall
ببخشید یعنی چی برای چه سیستمی است؟ دستور برای sql است.
سلام
اگر مرتبط با همون اسکریپتی هست که دارید با yii مینویسید، پیشنهاد میکنم یک کاری انجام بدید، راحت تر هست.
یک جدول جدید بسازید، با نام session ( نشست ) که پس از ورود هر کاربر، اطلاعاتی که مدنظر دارید در این جدول تنظیم بشه.
اطلاعاتی مثل تاریخ ورود، دفعات ورود، یوزر آیدی و آی پی و ... تا موارد دیگر.
این جدول شامل id , userid, time, counting باشه.
مقدار id که int هست و بصورت auto تعیین میشه.
userid که بصورت int هست.
time هم روی حالت datetime
counting هم بصورت int در نظر بگیرید ( در حالت Default روی 0 تنظیم کنید )
حالا، برای پس از ورود هر کاربر، یک کوئری Insert ساده در نظر بگیرید که اطلاعات رو ثبت کنه و بعد از هر بار ورود، مقدار counting+1 بشه.
این ساده ترین و بی دردسرترین راه هست.
که علاوه بر این، میتونید اطلاعات مختلفی از کاربر رو توی جدول ذخیره کنید.
علاوه بر اون میتونید اطلاعات افراد غیرکاربر و اصطلاحا میهمان رو هم بر اساس IP شون ثبت کنید.
پاسخ : دستور count(id=) یک عدد در sql
نقل قول:
نوشته اصلی توسط
sam_pontiac
سلام
اگر مرتبط با همون اسکریپتی هست که دارید با yii مینویسید، پیشنهاد میکنم یک کاری انجام بدید، راحت تر هست.
یک جدول جدید بسازید، با نام session ( نشست ) که پس از ورود هر کاربر، اطلاعاتی که مدنظر دارید در این جدول تنظیم بشه.
اطلاعاتی مثل تاریخ ورود، دفعات ورود، یوزر آیدی و آی پی و ... تا موارد دیگر.
این جدول شامل id , userid, time, counting باشه.
مقدار id که int هست و بصورت auto تعیین میشه.
userid که بصورت int هست.
time هم روی حالت datetime
counting هم بصورت int در نظر بگیرید ( در حالت Default روی 0 تنظیم کنید )
حالا، برای پس از ورود هر کاربر، یک کوئری Insert ساده در نظر بگیرید که اطلاعات رو ثبت کنه و بعد از هر بار ورود، مقدار counting+1 بشه.
این ساده ترین و بی دردسرترین راه هست.
که علاوه بر این، میتونید اطلاعات مختلفی از کاربر رو توی جدول ذخیره کنید.
علاوه بر اون میتونید اطلاعات افراد غیرکاربر و اصطلاحا میهمان رو هم بر اساس IP شون ثبت کنید.
یه دستور پیدا کردم توی نت عمل می کنه ولی هیچ نتیجه ای رو بالا نمیاره
کد HTML:
SELECT id, Count(login) FROM user GROUP BY id HAVING COUNT(login) >10
پاسخ : دستور count(id=) یک عدد در sql
نقل قول:
نوشته اصلی توسط
Marshall
یه دستور پیدا کردم توی نت عمل می کنه ولی هیچ نتیجه ای رو بالا نمیاره
کد HTML:
SELECT id, Count(login) FROM user GROUP BY id HAVING COUNT(login) >10
خب با ساختار دیتابیس شما تطابق داره این دستور؟!
میتونید یه اسکرین از ساختار جدول مربوطه برای من بفرستید؟
البته پیشنهاد تجربی من رو حتما بهش اهمیت بدید، مطمئنا بهتر هست.
پاسخ : دستور count(id=) یک عدد در sql
نقل قول:
نوشته اصلی توسط
sam_pontiac
خب با ساختار دیتابیس شما تطابق داره این دستور؟!
میتونید یه اسکرین از ساختار جدول مربوطه برای من بفرستید؟
البته پیشنهاد تجربی من رو حتما بهش اهمیت بدید، مطمئنا بهتر هست.
خیلی از پیشنهادتون ممنونم و می فهم چی گفتید فقط باید راه حل ساده ای هم وجود داشته باشه مثل این کدی که نوشتم
بله با ساختار جدول من تطابق داره و توی نت که سرچ کردم بعنوان پاسخ برگزیده هم انتخاب شده
کد HTML:
https://stackoverflow.com/questions/1804731/where-countcol-1
ولی نمی دونم چرا هیچ نتیجه ای نداره!
پاسخ : دستور count(id=) یک عدد در sql
نقل قول:
نوشته اصلی توسط
Marshall
خیلی از پیشنهادتون ممنونم و می فهم چی گفتید فقط باید راه حل ساده ای هم وجود داشته باشه مثل این کدی که نوشتم
بله با ساختار جدول من تطابق داره و توی نت که سرچ کردم بعنوان پاسخ برگزیده هم انتخاب شده
کد HTML:
https://stackoverflow.com/questions/1804731/where-countcol-1
ولی نمی دونم چرا هیچ نتیجه ای نداره!
پیشنهاد من هم خیلی ساده بود البته.
بهر جهت، این کوئری گروه بندی میکنه بر اساس اونهایی که مجموعشون بیش از 10 مورد هست.
یا این عدد رو تغییر بدید ( کمتر کنید، شاید داده هاتون به اون میزان نیست ).
یا به جای GROUP کردن، یک ORDER ساده بگیرید.
یعنی به این شکل :
کد:
SELECT id, Count(login) FROM user ORDER BY id DESC
امتحان کنید ببینیم نتیجه میده.
پاسخ : دستور count(id=) یک عدد در sql
نقل قول:
نوشته اصلی توسط
sam_pontiac
پیشنهاد من هم خیلی ساده بود البته.
بهر جهت، این کوئری گروه بندی میکنه بر اساس اونهایی که مجموعشون بیش از 10 مورد هست.
یا این عدد رو تغییر بدید ( کمتر کنید، شاید داده هاتون به اون میزان نیست ).
یا به جای GROUP کردن، یک ORDER ساده بگیرید.
یعنی به این شکل :
کد:
SELECT id, Count(login) FROM user ORDER BY id DESC
امتحان کنید ببینیم نتیجه میده.
نه بابا از روی داده ها دارم بهش عدد میدم هر عددی که میزنم نتیجه ای نمیاره
دستور شما هم عمل کرد و یک مقداری رو پیدا کرد
پاسخ : دستور count(id=) یک عدد در sql
نقل قول:
نوشته اصلی توسط
Marshall
نه بابا از روی داده ها دارم بهش عدد میدم هر عددی که میزنم نتیجه ای نمیاره
دستور شما هم عمل کرد و یک مقداری رو پیدا کرد
پس الان برطرف شد؟
پ.ن: دقیقا در حالت تصور و تجسم ساختار دیتابیس و ... دارم راهنمایی میکنم /:)
پاسخ : دستور count(id=) یک عدد در sql
نقل قول:
نوشته اصلی توسط
sam_pontiac
پس الان برطرف شد؟
پ.ن: دقیقا در حالت تصور و تجسم ساختار دیتابیس و ... دارم راهنمایی میکنم /:)
نه متاسفانه درست نشد:-(
کد شما فقط تعداد کل رو نشون میده
من هر دستوری با دستوری که پیدا کردم می نویسه zero
پاسخ : دستور count(id=) یک عدد در sql
نقل قول:
نوشته اصلی توسط
Marshall
نه متاسفانه درست نشد:-(
کد شما فقط تعداد کل رو نشون میده
من هر دستوری با دستوری که پیدا کردم می نویسه zero
تست کنید :
کد:
SELECT login FROM user WHERE id IN (SELECT id FROM user GROUP BY id HAVING COUNT(login) > 10)
پاسخ : دستور count(id=) یک عدد در sql
نقل قول:
نوشته اصلی توسط
sam_pontiac
تست کنید :
کد:
SELECT login FROM user WHERE id IN (SELECT id FROM user GROUP BY id HAVING COUNT(login) > 10)
ببخشید شمارو هم زحمت دادم
این دستور شما رو هم هر جوری که داده های جدول بود زدم همش شد zero
:-(
پاسخ : دستور count(id=) یک عدد در sql
نقل قول:
نوشته اصلی توسط
Marshall
ببخشید شمارو هم زحمت دادم
این دستور شما رو هم هر جوری که داده های جدول بود زدم همش شد zero
:-(
نه آقا چه زحمتی
پس با همون کوئری، اول count کنید و تو یه شرط بیارید که اگر تعداد از اون چیزی که مدنظر دارید بیشتر بود، کاری که میخواید انجام بشه و else عملیات دیگر...
پاسخ : دستور count(id=) یک عدد در sql
سلام. یه فیلدی در نظر بگیرین که تعداد لاگین کاربر رو ثبت کنه و با هربار لاگین یکی بهش اضافه بشه.
اونوقت دیگه به تابع count احتیاجی پیدا نمیکنین. چون به طور مثال اگه اسم فیلدی که تعداد لاگین کاربرارو ذخیره میکنه اسمش logincount باشه، شما میگین کاربرایی که logincount بیشتر از 10 باشه.
پاسخ : دستور count(id=) یک عدد در sql
نقل قول:
نوشته اصلی توسط
AtiPardakht
سلام. یه فیلدی در نظر بگیرین که تعداد لاگین کاربر رو ثبت کنه و با هربار لاگین یکی بهش اضافه بشه.
اونوقت دیگه به تابع count احتیاجی پیدا نمیکنین. چون به طور مثال اگه اسم فیلدی که تعداد لاگین کاربرارو ذخیره میکنه اسمش logincount باشه، شما میگین کاربرایی که logincount بیشتر از 10 باشه.
با سلام
بله دوست عزیز در جریان هستم ولی این کوئری که نوشتم مربوط به همین کار است فقط نمی دونم برای من چرا نباید کار کنه با دستور count هیچی پیدا نمی کنه ولی با دستور sum مجموع ها رو میارم
من میگم وقتی دستورش هست احتیاج به ساخت فیلد درون دیتابیس نیست
چون شاید من یا یکی دیگه مثل من لازم داشته باشه برای دهها جدول همین کارو انجام بده بعد اینطوری با دیدگاه شما هی باید فیلد بسازه! برای جدولهای قبلی که از اول این فیلد رو نداشتن چه دستوری رو باید بزنه که تعداد همه رو دونه به دونه جمع کنه و توی فیلد موردنظر وارد بشه!!!!!
از پیشنهاد شما سپاسگزارم
پاسخ : دستور count(id=) یک عدد در sql
کد زیر دقیقا بیان میکند که user_id کاربرانی را بگیر که بیشتر از 3 بار لاگین دارند
group کردن هم که مشخصه برای این استفاده میشه که دسته بندی بشه
کاملا صحیح کار میکنه
کد PHP:
SELECT user_id FROM user GROUP BY user_id HAVING count(id) >3
دمو
https://demo.phpmyadmin.net/master-c...emo&table=user