شما عضو این انجمن نبوده یا وارد نشده اید. لطفا برای مشاهده کامل انجمن و استفاده از آن وارد شوید یا ثبت نام کنید .

امتیاز موضوع:
  • 32 رای - 2.78 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
استفاده از ORDER و GROUP در MySQL
#1
در ادامه آموزش مقدماتی کار با php و mysql، نوبت به آشنایی با نحوه استفاده از دستورات  ORDER BY و GROUP BY رسیده است، با ذکر این مقدمه که دستورات ذکر شده در واقع با هدف دسته بندی و مرتب سازی دقیق تر نتایج و به دست آوردن مقادیر مورد نظر در هنگام کار با php و mysql ایجاد شده اند، به عبارتی دیگر، در برنامه نویسی کاربردی، مواردی پیش می آید که ناگزیریم اطلاعات را به صورت مرتب شده نشان دهیم، یا نتایج مشابه را در یک مورد خلاصه کنیم، اینجاست که کاربرد ORDER BY و GROUP BY رهگشای ما خواهد بود که در ادامه آموزش به آن خواهیم پرداخت.

دستور ORDER BY

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

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
خروجی کد بالا می تواند به فرض به شکل زیر باشد.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

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

استفاده از DESC، ASC و تابع rand

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

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

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

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

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
استفاده از LIMIT

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

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

استفاده از AND و OR

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

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
دستور بالا، کاربرانی را که سن آنها بالاتر از 40 یا پائین تر از 20 باشد، در لیست نتایج پرس و جو از پایگاه داده نمایش می دهد.

استفاده از GROUP BY

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

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
به این صورت از بین کاربران یک شهر، تنها یک عضو با توجه به نحوه چینش دستور ORDER BY انتخاب شده و در نتایج نشان داده می شود.

مثال دیگر از کاربرد GROUP BY در mysql:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

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

توابع مربوط به GROUP BY را در اصطلاح توابع تجمعی یا aggregate functions می گویند (شامل COUNT، MAX، MIN، SUM، AVG و...) که در آموزش های بعدی به تفصیل راجب آنها خواهیم گفت.
ثبت دامنه و فروش هاست، سامانه پیامک، طراحی سایت، خدمات شبکه
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
  | دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.

sms: 10004673  - 500021995
پاسخ


موضوعات مشابه ...
موضوع نویسنده پاسخ‌ها بازدید آخرین ارسال
  آموزش کار با پایگاه داده MySQL در PHP: othersnn 0 107 19/01/15، 11:33 AM
آخرین ارسال: othersnn
  استفاده از JOIN و ساخت پرس و جوی ترکیبی در MySQL saberi 0 1,214 15/09/14، 07:14 PM
آخرین ارسال: saberi
  حذف مقادیر از MySQL با دستور DELETE saberi 0 996 15/09/14، 06:59 PM
آخرین ارسال: saberi
  به روز رسانی ردیف ها در MySQL با UPDATE saberi 0 1,027 15/09/14، 06:53 PM
آخرین ارسال: saberi
  توابع تجمعی (Aggregate Functions) در MySQL saberi 0 1,048 15/09/14، 06:43 PM
آخرین ارسال: saberi
  نحوه استفاده از WHERE در MySQL saberi 0 958 15/09/14، 06:30 PM
آخرین ارسال: saberi
  انتخاب ردیف ها با دستور SELECT FROM در MySQL saberi 0 987 15/09/14، 06:25 PM
آخرین ارسال: saberi
  نحوه ذخیره کردن اطلاعات با دستور INSERT در MySQL saberi 0 1,050 15/09/14، 06:21 PM
آخرین ارسال: saberi
  نگاهی به MySQL، پرکاربردترین سیستم مدیریت پایگاه داده saberi 0 1,160 15/09/14، 06:18 PM
آخرین ارسال: saberi
  ساخت دیتابیس، جدول و ردیف با دستور CREATE در MySQL saberi 0 1,260 15/09/14، 06:15 PM
آخرین ارسال: saberi

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان