shayanblue
کاربر تازه وارد
سلام دوستان کسی میتونه به من کمک کنه که چطور از یک table در دیتابیس mysql رکورد بگیرم طوری که اولویت با مواردی باشه که بیشتر تکرار شده باشن ممنون میشم راهنمایی کنین.
:blink: :blink:به نقل از shayanblue :پارسا جان چیزی که شما به اون اشاره کردین به ذهن خودمم رسید ولی باسه رکورد های با تعداد بالا فکر نکنم راه حل مناسبی باشه برای همین رفتم سراغ دستورات sql ولی تا الان به نتیجه ی نرسیدم!
فکر نکنم تفاوتی بکنه ها؟به نقل از mazoolagh :من با MSSQL میتونم راهنماییت کنم ولی MySQL ندارم که تست کنم!
به نقل از balabala :فکر نکنم تفاوتی بکنه ها؟
بهترین حالت اینه که یه تیبل دیگه درست کنی موقع ورود اطلاعات تو تیبل 1 به صورت کانتر تیبل 1 عمل کنه.(از 2 فیلد آی دی و کانتر تشکیل شده باشه)به نقل از shayanblue :سلام دوستان کسی میتونه به من کمک کنه که چطور از یک table در دیتابیس mysql رکورد بگیرم طوری که اولویت با مواردی باشه که بیشتر تکرار شده باشن ممنون میشم راهنمایی کنین.
بسته به ترافیک + رم + سی پی یو + تعداد رکورد دارهبه نقل از Parsa_361 ::blink: :blink:
این جوری که بهتره !! :blink:
مگه نمی خوای رکورد ها رو به ترتیب خاصی ار db بگیری ؟
پس بالاخره باید تمام رکورد ها رو بگیری !!!
اگه بخوای که با یک تریب خاص هم بگیری که دیگه خیلی سرعت کار رو میاره پایین !
پس بهتره کار مرتب کردن رو بزاری به عهده ی PHP !
چون PHP هم قدرت بالاتری داره و هم سرعت خیلی بالا تر !!!!
هر چقدر هم که تعداد رکورد ها زیاد باشه فکر نکنم PHP کم بیاره !
حالا مگه تعداد رکورد هات چقده ؟
select count(fld1) , fld1, fld2,...
from table_name
where ....
group by fld1
order by count(fld1) desc
select field_name, count(*) AS number
from table_name
GROUP BY field_name
ORDER BY number;
select count(fld1) , fld1
from table_name
group by fld1
order by count(fld1) desc
select count(fld1) , fld1, fld2
from table_name
group by fld1
order by count(fld1) desc
به نقل از setareh2 :من رو حرف مازولاق حرف نمیزنم!!
ولی شکل mysql کدتون این میشه:
البته به نظر من اگه تعدا فیلدها خیلی زیاد باشه و همینطور تعداد کانکشن ها بالا باشه این کوئری چیز جالبی نیست.کد:select field_name, count(*) AS number from table_name GROUP BY field_name ORDER BY number;
اگه یه تیبل دیگه بسازیم کوئری فقط یه sort انجام میده و هم خیلی سریعتره و هم ریسورس کمی استفاده میکنه
اما با این کوئری هر کدوم علاوه بر sort برای تک تک فیلدهای یه فانکشن count هم انجام میده... اگه اینو تو یه دیتابیس بزرگ امتحان کنید میتونید اختلافش رو تو زمان اجرای کوئری ببینید.
این نظر منه! ممکنه راه بهتری هم باشه:blush:به نقل از mazoolagh :یعنی حتما باید یک تیبل دیگه بسازیم دیگه!
picture:
Columns: | picture_id | picture_name |
_______________________________________
Rows(1): | 1 | photo_one |
Rows(2): | 2 | photo_two |
Rows(3): | 3 | photo_three |
_______________________________________
picture_counter:
Columns: | picture_id | date |
_____________________________________
Rows(1): | 1 | 2005/12/03 |
Rows(2): | 2 | 2005/12/03 |
Rows(3): | 3 | 2005/12/03 |
Rows(4): | 1 | 2005/12/03 |
Rows(5): | 1 | 2005/12/02 |
Rows(6): | 1 | 2005/12/02 |
Rows(7): | 3 | 2005/12/01 |
Rows(8): | 2 | 2005/12/01 |
Rows(9): | 3 | 2005/12/01 |
_____________________________________
Columns: | picture_id |
________________________
Rows(1): | 1 |
Rows(2): | 3 |
Rows(3): | 2 |
________________________
Columns: | picture_id | picture_name | hit_counter |
_____________________________________________________
Rows(1): | 1 | photo_one | |
Rows(2): | 2 | photo_two | |
Rows(3): | 3 | photo_three | |
_____________________________________________________
SELECT COUNT(fild_name) AS conter FROM table_name;