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

دستور and & or

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

  1. کاربر ارشد

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

    از And و Or برای ترکيب شرط ها در دستور Where استفاده می شود .
    گاهی اوقات اطلاعات مورد نياز ما در دستور Select دارای چندين شرط مختلف است . به طور مثال ما مشخصات دانشجويان ترم دوم رشته نرم افزار که معدل آنها بيش از 15 است را می خواهيم . در اين حالت بايستی هر يک از شرط های مسئله را به تنهايی تعريف کرده و سپس آنها را با هم ترکيب کنيم . برنامه به ارزيابی هر يک از شرط ها پرداخته ، سپس نتايج حاصله را با هم ترکيب کرده و خروجی را تعيين می کند .
    عملگر And برای اجرای دستور نياز دارد تا تمام شرط های تعيين شده برای آن درست باشد . در حالی که عمگر Or فقط نياز دارد که حداقل يکی از شرط های آن درست باشد . در جداول زير چگونگی برقراری نتيجه نهايی در هنگام استفاده از اين دو اوپراتور را مشاهده می کنيم :
    در حالت 2 شرط :
    [TABLE="width: 100%"]
    [TR]
    [TD] [TABLE="class: ex"]
    [TR]
    [TD="class: header, colspan: 3"] OR [/TD]
    [/TR]
    [TR]
    [TD="class: header"] شرط 1 [/TD]
    [TD="class: header"] شرط 2 [/TD]
    [TD="class: header"] نتيجه [/TD]
    [/TR]
    [TR]
    [TD="class: body"] درست [/TD]
    [TD="class: body"] درست [/TD]
    [TD="class: body"] درست [/TD]
    [/TR]
    [TR]
    [TD="class: body"] درست [/TD]
    [TD="class: body"] غلط [/TD]
    [TD="class: body"] درست [/TD]
    [/TR]
    [TR]
    [TD="class: body"] غلط [/TD]
    [TD="class: body"] درست [/TD]
    [TD="class: body"] درست [/TD]
    [/TR]
    [TR]
    [TD="class: body"] غلط [/TD]
    [TD="class: body"] غلط [/TD]
    [TD="class: body"] غلط [/TD]
    [/TR]
    [/TABLE]
    [/TD]
    [TD] [TABLE="class: ex"]
    [TR]
    [TD="class: header, colspan: 3"] AND [/TD]
    [/TR]
    [TR]
    [TD="class: header"] شرط 1 [/TD]
    [TD="class: header"] شرط 2 [/TD]
    [TD="class: header"] نتيجه [/TD]
    [/TR]
    [TR]
    [TD="class: body"] درست [/TD]
    [TD="class: body"] درست [/TD]
    [TD="class: body"] درست [/TD]
    [/TR]
    [TR]
    [TD="class: body"] درست [/TD]
    [TD="class: body"] غلط [/TD]
    [TD="class: body"] غلط [/TD]
    [/TR]
    [TR]
    [TD="class: body"] غلط [/TD]
    [TD="class: body"] درست [/TD]
    [TD="class: body"] غلط [/TD]
    [/TR]
    [TR]
    [TD="class: body"] غلط [/TD]
    [TD="class: body"] غلط [/TD]
    [TD="class: body"] غلط [/TD]
    [/TR]
    [/TABLE]
    [/TD]
    [/TR]
    [/TABLE]
    چگونگی حالت های فوق را در مثال های زير بررسی می کنيم :
    [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]
    مثال 1 : مشخصات دانشجويانی را از جدول Student ارائه دهيد که نمره آنها بيش از 15 و رشته تحصيلی آنها نرم افزار باشد :
    [TABLE="class: ex"]
    [TR]
    [TD="class: header, colspan: 2"] مثال [/TD]
    [/TR]
    [TR]
    [TD="class: body"] Select * From Student
    Where Major = 'Soft Ware' AND Grade > 15 ; [/TD]
    [TD="class: header"] کد [/TD]
    [/TR]
    [TR]
    [TD="class: body"] [TABLE="class: ex"]
    [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"] 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]
    [/TD]
    [TD="class: header"] خروجی [/TD]
    [/TR]
    [/TABLE]
    مثال 2 : مشخصات دانشجويانی را از جدول Student ارائه دهيد که نمره آنها بيش از 17 بوده يا رشته تحصيلی آنها نرم افزار باشد :
    [TABLE="class: ex"]
    [TR]
    [TD="class: header, colspan: 2"] مثال [/TD]
    [/TR]
    [TR]
    [TD="class: body"] Select * From Student
    where Major = 'Soft Ware' OR Grade > 17 ; [/TD]
    [TD="class: header"] کد [/TD]
    [/TR]
    [TR]
    [TD="class: body"] [TABLE="class: ex"]
    [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"] 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]
    [/TD]
    [TD="class: header"] خروجی [/TD]
    [/TR]
    [/TABLE]

    [HR][/HR] نکته مهم : همچنين می توان با استفاده از عملگر پرانتز چندين شرط مختلف را به صورت دسته های مجزا تعريف کرده و سپس همه آنها را با هم ترکيب کرد . در اين حالت شرط های هر گروه ابتدا در داخل پرانتز با هم ترکيب شده ، سپس نتيجه حاصله به عنوان نتيجه نهايي آن گروه شرط به دستور Where ارسال می شود و درنهايت نتايج تمام گروه ها با هم ترکيب می شوند .
    مثال مهم : از جدول Student مشخصات دانشجويانی را ارائه دهيد که نمره آنها 18 و رشته تحصيلی آنها سخت افزار بوده يا نمره آنها 16 و رشته تحصيلی شان نرم افزار باشد :

    [TABLE="class: ex"]
    [TR]
    [TD="class: header"] مثال [/TD]
    [/TR]
    [TR]
    [TD="class: body"] Select * From Student
    Where ( ( Grade = 18 AND Major = 'Hard Ware' ) OR ( Garde = 16 AND Major = 'Soft Ware' ) ) " ; [/TD]
    [TD="class: header"] کد [/TD]
    [/TR]
    [TR]
    [TD="class: body"] [TABLE="class: ex"]
    [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"] 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]
    [/TABLE]
    [/TD]
    [TD="class: header"] خروجی [/TD]
    [/TR]
    [/TABLE]

    [HR][/HR]