پورتال اینترنتی شرکت ستاره شرق نکا ::استفاده از ORDER و GROUP در MySQL 
نمایش بر اساس آرشیو ماهانه


 

RSS 2.0

 

 



   مطالب آموزشی  برنامه نویسی استفاده از ORDER و GROUP در MySQL

   استفاده از ORDER و GROUP در MySQL

در ادامه آموزش مقدماتی کار با php و mysql، نوبت به آشنایی با نحوه استفاده از دستورات  ORDER BY و GROUP BY رسیده است، با ذکر این مقدمه که دستورات ذکر شده در واقع با هدف دسته بندی و مرتب سازی دقیق تر نتایج و به دست آوردن مقادیر مورد نظر در هنگام کار با php و mysql ایجاد شده اند، به عبارتی دیگر، در برنامه نویسی کاربردی، مواردی پیش می آید که ناگزیریم اطلاعات را به صورت مرتب شده نشان دهیم، یا نتایج مشابه را در یک مورد خلاصه کنیم، اینجاست که کاربرد ORDER BY و GROUP BY رهگشای ما خواهد بود که در ادامه آموزش به آن خواهیم پرداخت.
دستور ORDER BY

همانطور که در مباحث گذشته از آموزش  مقدماتی MySQL به طور مختصر دیدیم، از ORDER BY در یک دستور SELECT * FROM استفاده می شود، هدف از به کاربردن آن، تفهیم نحوه مرتب سازی و چینش سلیقه ای و سفارشی نتایج و ردیف های درخواست شده از mysql است، به فرض اگر کاربرانی با مقادیر سنی متفاوت در سایت خود داشته باشیم و بخواهیم اسامی آنها را بر اساس سن مرتب کنیم، خواهیم نوشت:

<?php
mysql_query("SELECT * FROM table WHERE name != '' ORDER BY age");
?>

خروجی کد بالا می تواند به فرض به شکل زیر باشد.

Amin 23
Mohammad 24
Maryam 26
.
.
.

همانطور که ملاحظه می کنید، در مثال بالا از جدول table و دو ستون فرضی name و age استفاده کرده ایم.
استفاده از DESC، ASC و تابع rand

در حالت پیش فرض، mysql نتایج را به صورت صعودی (از کوچک به بزرگ یا Ascending) مرتب سازی می کند، اما مرتب سازی به صورت نزولی (از بزرگ به کوچک یا Descending) و همچنین مرتب سازی اتفاقی یا رندوم (Random) با افزودن عباراتی که در زیر مشاهده می کنید، امکان پذیر است.
DESC: مرتب سازی پیش فرض یا صعودی (از کوچک به بزرگ)
ASC: مرتب سازی نزولی (از بزرگ به کوچک)
rand: مرتب سازی به صورت اتفاقی (رندوم)
به مثال های زیر توجه کنید.
نحوه استفاده از DESC برای مرتب سازی و نمایش نتایج به صورت چینش صعودی:

<?php
mysql_query("SELECT * FROM table WHERE name != '' ORDER BY age DESC");
?>

نحوه استفاده از ASC برای مرتب سازی و نمایش نتایج به صورت چینش نزولی:

<?php
mysql_query("SELECT * FROM table WHERE name != '' ORDER BY age ASC");
?>

نحوه استفاده از تابع rand برای مرتب سازی و نمایش نتایج به صورت چینش اتفاقی:

<?php
mysql_query("SELECT * FROM table WHERE name != '' ORDER BY age rand()");
?>

استفاده از LIMIT

استفاده از دستور ORDER BY به تنهایی و بدون محدود کردن تعداد نتایج، می تواند منجر به نمایش تعداد خیلی زیادی از اطلاعات با یک درخواست از دیتابیس شود، از این رو یک پارامتر دیگر به نام LIMIT را می توانیم به دستور خود اضافه کنیم، LIMIT تعداد ردیف هایی را که به عنوان نتایج یک پرس و جو از دیتابیس به دست می آید، محدود می کند، به فرض دستور زیر:

<?php
mysql_query("SELECT * FROM table WHERE name != '' ORDER BY age rand() LIMIT 5");
?>

تنها 5 کاربر را به صورت اتفاقی انتخاب می کند، همچنین می توان نقطه شروع انتخاب ردیف ها را نیز به mysql تفهیم کرد، بدین منظور برای LIMIT از دو عدد استفاده می کنیم، عدد اول مقادیر ردیفی است که با توجه به ORDER BY آن را انتخاب کرده ایم (به فرض شروع از سن 35 سال) و عدد دوم تعداد نتایجی است که پرس و جو را به آن محدود کرده ایم (به فرض 5 عدد).

<?php
mysql_query("SELECT * FROM table WHERE name != '' ORDER BY age ASC LIMIT 35,5");
?>

با استفاده از این شیوه به صورت داینامیک، می توان قابلیت هایی مثل نمایش صفحه به صفحه مطالب را ایجاد نمود که در بحث آموزش های کاربردی در این باره خواهیم گفت.
استفاده از AND و OR

شیوه نگارش (syntax) دستورات php در هنگام کار با mysql این اجازه را به ما می دهد که همانند علامت های && و || از دو عبارت AND و OR در یک query استفاده کنیم، البته نحوه کاربرد آنها در اینجا کمی متفاوت است اما هدف از به کارگیریشان یکی است، از AND برای محدودتر و دقیق تر کردن نتایج و از OR برای وسیع تر کردن شمول نتایج یک پرس و جو استفاده می شود، به فرض اگر بخواهیم فقط کاربران دارای سن بالاتر از 40 و پائین تر از 20 را نمایش دهیم، می نویسیم:

<?php
mysql_query("SELECT * FROM table WHERE name != '' AND age > 40 OR name != '' AND age < 20 ORDER BY age");
?>

دستور بالا، کاربرانی را که سن آنها بالاتر از 40 یا پائین تر از 20 باشد، در لیست نتایج پرس و جو از پایگاه داده نمایش می دهد.
استفاده از GROUP BY

یک قابلیت کاربردی دیگر که در دسته بندی و نمایش بهتر نتایج حاصل از پرس و جوی پایگاه داده می توان از آن استفاده کرد، قابلیت گروه بندی نتایج دارای وجه مشترک در یک نتیجه است، این قابلیت توسط پارامتر GROUP BY به دست می آید، به فرض اگر بخواهیم گروه بندی را بر اساس شهر کاربران داشته باشیم، خواهیم نوشت:

<?php
mysql_query("SELECT * FROM table WHERE name != '' GROUP BY city ORDER BY age");
?>

به این صورت از بین کاربران یک شهر، تنها یک عضو با توجه به نحوه چینش دستور ORDER BY انتخاب شده و در نتایج نشان داده می شود.
مثال دیگر از کاربرد GROUP BY در mysql:

<?php
mysql_query("SELECT id,name,age FROM table WHERE name NOT LIKE '%Akbar%' GROUP BY city ORDER BY age ASC LIMIT 5");
?>

در هنگام استفاده از قابلیت GROUP BY و ORDER BY باید دقت کنید که از آنها به ترتیب استفاده شود، در غیر اینصورت mysql خطای syntax را نمایش خواهد داد.

 

منبع : webgoo.ir




پست های مشابه یا مرتبط با این مطلب


نظرات و پیشنهادات شما

* نام
وبسایت
ایمیل
:) :( :P :o :C ;Y :0 :D :/ :s :r ;) :H) :i) :Q)

کاراکتر باقی مانده

* پیغام
CAPTCH تصویر امنیتی
تصویر امنیتی
 

 


آخرین مطالب بخش برنامه نویسی

استفاده از ORDER و GROUP در MySQL

 

 

 

 




بازدید امروز:20
بازدید دیروز : 124
افراد آنلاین: 1
بازدید هفته (میلادی) : 1004

مجموع کاربران : 5 نفر
سه عضو آخر
estarn
amiryal
masoft

تعداد کل مطالب سایت :72
تعداد کل نظرات ثبت شده :60

بازدید کل


:نوع مرورگر
CCBot/2.0 (https://commoncrawl.org/faq/)

: زبان سیستم عامل
English

آی پی :
18.207.106.142

 

CopyRight © 2013 Estarn.ir - Design & Programing sosoft