1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

دستور Order By

شروع موضوع توسط hector2141 ‏26/7/13 در انجمن SQL

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    دستور Order By :

    اطلاعات خروجی در دستور select به طور کلی بی نظم است و مقادير خروجی در ستون های جدول بر حسب مقدار هيج ستونی مرتب نيستند . اين دستور برای مرتب کردن اطلاعات جدول بر اساس مقادير يک يا چند ستون برحسب شاخص هايی مثل ترتيب حروف الفبا ، بزرگتر يا کوچکتر بودن اعداد و ... استفاده می شود .
    شکل کلی اين دستور به صورت زير است :
    Select نام فيلدهای مورد نظر From جدول مورد نظر
    Order By فيلد مورد نظر
    * فيلدهای معرفی شده در دستور Select از جدول مذکور نمايش داده شده و اطلاعات بر حسب ستون مقابل دستور Order By مرتب می شوند .
    - عبارت ASC : به کار بردن اين دستور پس از دستور Order By باعث مرتب شدن اطلاعات درون جدول از کم به زياد می شود که البته اتخاب پيش فرض SQL است و نيازی به درج آن نيست .
    عبارت DESC : به کار بردن اين واژه پس از دستور Order By باعث مرتب شدن اطلاعات جدول از زِياد به کم در اعداد و در حروف از z تا a می شود ، که در صورت نياز درج آن ضروری است .

    مثال : از جدول Student ، مشخصات نام و نام خانوادگی دانشجويان رشته نرم افزار را بر حسب حروف الفبا نمايش دهيد :
    [TABLE="class: ex"]
    [TR]
    [TD="class: header, colspan: 6"] Student Table[/TD]
    [/TR]
    [TR]
    [TD="class: header"] Student ID[/TD]
    [TD="class: header"] Name[/TD]
    [TD="class: header"] Family[/TD]
    [TD="class: header"] Major[/TD]
    [TD="class: header"] City[/TD]
    [TD="class: header"] Grade[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 41252214[/TD]
    [TD="class: body"] Ahmad[/TD]
    [TD="class: body"] Rezaee[/TD]
    [TD="class: body"] Hard Ware[/TD]
    [TD="class: body"] Tehran[/TD]
    [TD="class: body"] 18[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 10724113[/TD]
    [TD="class: body"] Ehsan[/TD]
    [TD="class: body"] Amiri[/TD]
    [TD="class: body"] Soft Ware[/TD]
    [TD="class: body"] Karaj[/TD]
    [TD="class: body"] 14[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 10254861[/TD]
    [TD="class: body"] Zahra[/TD]
    [TD="class: body"] Hosini[/TD]
    [TD="class: body"] Hard Ware[/TD]
    [TD="class: body"] Tehran[/TD]
    [TD="class: body"] 17[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 27365187[/TD]
    [TD="class: body"] Sahar[/TD]
    [TD="class: body"] Ahmadi[/TD]
    [TD="class: body"] Soft Ware[/TD]
    [TD="class: body"] Bam[/TD]
    [TD="class: body"] 16[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 35654415[/TD]
    [TD="class: body"] Hesam[/TD]
    [TD="class: body"] Razavi[/TD]
    [TD="class: body"] Soft Ware[/TD]
    [TD="class: body"] Tehran[/TD]
    [TD="class: body"] 19[/TD]
    [/TR]
    [/TABLE]

    [TABLE="class: ex"]
    [TR]
    [TD="class: header, colspan: 2"] مثال[/TD]
    [/TR]
    [TR]
    [TD="class: body"] Select Name , Family From Student
    Where Major ="Soft Ware"
    Order By Family [/TD]
    [TD="class: header"] کد[/TD]
    [/TR]
    [TR]
    [TD="class: body"] [TABLE="class: ex, width: 200"]
    [TR]
    [TD="class: header"] Name[/TD]
    [TD="class: header"] Family[/TD]
    [/TR]
    [TR]
    [TD="class: header"] Sahar[/TD]
    [TD="class: header"] Ahmadi[/TD]
    [/TR]
    [TR]
    [TD="class: header"] Ehsan[/TD]
    [TD="class: header"] Amiri[/TD]
    [/TR]
    [TR]
    [TD="class: header"] Hesam[/TD]
    [TD="class: header"] Razavi[/TD]
    [/TR]
    [/TABLE]
    [/TD]
    [TD="class: header"] خروجی[/TD]
    [/TR]
    [/TABLE]

    [HR][/HR] نکته : همچنين می توان يک جدول را بر حسب بيش از يک فيلد مرتب کرد ، برای اين منظور پس از دستور Order By نام تمام فيلدهای مورد نظر را نوشته و آنها را با کاما از هم دا می کنيم . اولويت مرتب سازی با فيلدهای است که نام آنها زودتر ذکر شده باشند .
    مثال : جدول مشخصات دانشجويان را بر حسب فيلد نام ( بر حسب حروف از a تا z ) و بر حسب نمره ( از کم به زياد ) مرتب کنيد :
    [TABLE="class: ex"]
    [TR]
    [TD="class: header, colspan: 6"] Student Table[/TD]
    [/TR]
    [TR]
    [TD="class: header"] Student ID[/TD]
    [TD="class: header"] Name[/TD]
    [TD="class: header"] Family[/TD]
    [TD="class: header"] Major[/TD]
    [TD="class: header"] City[/TD]
    [TD="class: header"] Grade[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 41252214[/TD]
    [TD="class: body"] Ahmad[/TD]
    [TD="class: body"] Rezaee[/TD]
    [TD="class: body"] Hard Ware[/TD]
    [TD="class: body"] Tehran[/TD]
    [TD="class: body"] 15[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 10724113[/TD]
    [TD="class: body"] Ehsan[/TD]
    [TD="class: body"] Amiri[/TD]
    [TD="class: body"] Soft Ware[/TD]
    [TD="class: body"] Karaj[/TD]
    [TD="class: body"] 19[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 10254861[/TD]
    [TD="class: body"] Zahra[/TD]
    [TD="class: body"] Hosini[/TD]
    [TD="class: body"] Hard Ware[/TD]
    [TD="class: body"] Tehran[/TD]
    [TD="class: body"] 18[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 27365187[/TD]
    [TD="class: body"] Sahar[/TD]
    [TD="class: body"] Ahmadi[/TD]
    [TD="class: body"] Soft Ware[/TD]
    [TD="class: body"] Bam[/TD]
    [TD="class: body"] 20[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 35654415[/TD]
    [TD="class: body"] Hesam[/TD]
    [TD="class: body"] Razavi[/TD]
    [TD="class: body"] Soft Ware[/TD]
    [TD="class: body"] Tehran[/TD]
    [TD="class: body"] 14[/TD]
    [/TR]
    [/TABLE]
    نکته : در جدول خروجی مثال زير به ارتباط مقادير ستون های Family , Grade توجه کنيد . باوجود اينکه نمره درسی دانشجو حسام رضوی از احمد رضايی کمتر است ، ولی به دليل اينکه اولويت مرتب سازی با نام خانوادگی است ، نام رضوی بالاتر از رضايی قرار گرفته است .
    [TABLE="class: ex"]
    [TR]
    [TD="class: header, colspan: 2"] مثال[/TD]
    [/TR]
    [TR]
    [TD="class: body"] Select Name , Family , Grade From Student
    Order By Family ASC , Grade DESC [/TD]
    [TD="class: header"] کد [/TD]
    [/TR]
    [TR]
    [TD="class: body"] [TABLE="class: ex, width: 300"]
    [TR]
    [TD="class: header"] Name[/TD]
    [TD="class: header"] Family[/TD]
    [TD="class: header"] Grade[/TD]
    [/TR]
    [TR]
    [TD="class: body"] Sahar [/TD]
    [TD="class: body"] Ahmadi[/TD]
    [TD="class: body"] 20[/TD]
    [/TR]
    [TR]
    [TD="class: body"] Ehsan [/TD]
    [TD="class: body"] Amiri[/TD]
    [TD="class: body"] 19[/TD]
    [/TR]
    [TR]
    [TD="class: body"] Zahra[/TD]
    [TD="class: body"] Hoseini[/TD]
    [TD="class: body"] 18[/TD]
    [/TR]
    [TR]
    [TD="class: body"] Hesam[/TD]
    [TD="class: body"] Razavi[/TD]
    [TD="class: body"] 14[/TD]
    [/TR]
    [TR]
    [TD="class: body"] Ahmad[/TD]
    [TD="class: body"] Rezaee[/TD]
    [TD="class: body"] 16[/TD]
    [/TR]
    [/TABLE]
    [/TD]
    [TD="class: header"] خروجی[/TD]
    [/TR]
    [/TABLE]
    نکته : می توان در دستور Order By به جای ذکر نام ستون ها از يک عدد به جای آن استفاده کرد . عدد استفاده شده شماره قرار گيری ستون مورد نظر در دستور Select است . برای مثال اولين ستون دستور Select عدد 1 و دومين ستون عدد 2 و ... را خواهند داشت . بازنویسی دستور بالا با استفاده از اين روش به صورت زير خواهد بود :
    [TABLE="class: ex"]
    [TR]
    [TD="class: header, colspan: 2"] مثال[/TD]
    [/TR]
    [TR]
    [TD="class: body"] Select Name , Family , Grade from Student
    Order By 2 ASC , 3 DESC [/TD]
    [TD="class: header"] کد[/TD]
    [/TR]
    [/TABLE]

    [HR][/HR]