با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، و کاربرانی که دوره آموزش MySQL را دنبال می کنند. تا الان دستوراتی را بررسی کردیم که امکان انتخاب ، ویرایش ، بروزرسانی و حذف داده های جداول MySQL را فراهم می کند. اما در حالت عادی نتایج در این دستورات بدون ترتیب خاصی برگردانده می شوند، زمانکیه شما می خواهید نتایج یک Query را در یک ترتیب خاص دریافت کنید، می توانید از دستور ORDER BY در MySQL استفاده کنید. در ادامه ی این مبحث چگونگی مرتب سازی نتایج در MySQL را با استفاده از دستور فوق توضیح داده ایم.
در ادامه ی این آموزش با سینتکس دستور ORDER BY در MySQL برای مرتب سازی نتایج آشنا می شوید.
سینتکس عمومی دستور ORDER BY برای مرتب سازی نتایج در MySQL برای استخراج دادها از جداول به صورت زیر است :
1 2 | SELECT field1, field2,...fieldN table_name1, table_name2... ORDER BY field1, [field2...] [ASC [DESC]] |
در این بخش یک نمونه کد از دستور ORDER BY در MySQL به همراه شرط WHERE ارائه شده است.
مثال-۱
مثال زیر تمام نتایج را به صورت صعودی مرتب سازی می کند :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> SELECT * from tutorials_tbl ORDER BY tutorial_author ASC +-------------+----------------+-----------------+-----------------+ | tutorial_id | tutorial_title | tutorial_author | submission_date | +-------------+----------------+-----------------+-----------------+ | 2 | Learn MySQL | Abdul S | 2007-05-24 | | 1 | Learn PHP | John Poul | 2007-05-24 | | 3 | JAVA Tutorial | Sanjay | 2007-05-06 | +-------------+----------------+-----------------+-----------------+ 3 rows in set (0.42 sec) mysql> |
شما می توانید از دستور ORDER BY در تابع ()mysql_query در زبان PHP استفاده کنید.
برای استخراج داده ها نیز می توانید از دستور ()mysql_fetch_array استفاده کنید.
مثال-۲
اینبار مثال قبلی را به صورت نزولی مرتب می کنیم :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl ORDER BY tutorial_author DESC'; mysql_select_db('TUTORIALS'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Tutorial ID :{$row['tutorial_id']} <br> ". "Title: {$row['tutorial_title']} <br> ". "Author: {$row['tutorial_author']} <br> ". "Submission Date : {$row['submission_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn); ?> |
نتایجی که از پرس و جوهای مختلف در بدست می آورید، در حالت پیش فرض به صورت صعودی مرتب شده اند ، اما در صورتی که شما قصد تغییر این حالت را به نزولی داشته باشید ، به راحتی می توانید از دستور ORDER BY در MySQL استفاده کنید.