محتویات سایت
        برچسب های محبوب 








 
   تفاضل متقارن
 
   SQL Server
   ۲۴۶۰۵
   این مقاله حاوی فایل ضمیمه نمی باشد
   محمد سلیم آبادی
   ۱۳۹۰/۱/۱۵
نسخه قابل چاپ نسخه قابل چاپ

مقدمه

در نظریه مجموعه ها (set theory) عملگری به نام "تفاضل متقارن" یا به انگلیسی Symmetric Difference وجود دارد که تعریف آن به صورت زیر است (طبق تعریف Wikipedia):

مجموعه عناصری که در یکی از دو جدول A و B وجود دارند ولی جزء اشتراکاتشان نیستند. تفاضل متقارن دو مجموعه را بصورت زیر نمایش می دهند:


بطور نمونه اگر مجموعه ی A شامل عناصر {3و2و1} و B شامل اعضای {4,2,1} باشد تفاضل متقارن این دو، عناصر 4و3 خواهد بود.

نمودار Venn تفاضل متقارن:


فرمول : اجتماع تفاضل A از B و B از A برابر با تفاضل متقارن است یعنی:


مساله

بعد از اینکه مقدمات بیان شد و شرایط کمی بیشتر برای طرح مساله مساعد شد می تونیم به مساله بپردازیم.
فرض کنید در کلاسی دانشجویان این امکان را دارند که در دو رشته ورزشی فعالیت کنند. هدف ما انتخاب دانشجویانی است که تنها در یک رشته ورزشی در حال فعالیت هستند (همراه با رشته ورزشی در صورت تمایل).

برای این کار دو جدول در نظر می گیریم که یکی لیست دانشجویانی که در رشته فوتبال هستند و جدول دیگر لیست دانشجویانی که در رشته ورزشی ping-pong مشغول بازی هستند. توسط دو عبارت زیر این دو جدول ساخته و تعداد سطر برای نمونه در آن می گسترانیم:

CREATE TABLE PingPing
(

      std_id INT NOT NULL PRIMARY KEY

);

CREATE
TABLE FootBall
(

      std_id INT NOT NULL PRIMARY KEY

);

INSERT INTO PingPing VALUES (1), (2), (3);
INSERT
INTO FootBall VALUES (1), (2), (4);

 

تفاضل متقارن داده های این دو جدول شامل عناصر 3 و 4 خواهد بود.

راه حل

اگر ما منطق ای که در تعریف تفاضل بکار رفته است را تبدیل به زبان SQL کنیم نتیجه مورد نظر حاصل خواهد شد.


(-- A\B
      SELECT std_id
        FROM PingPong
      EXCEPT
      SELECT std_id
        FROM FootBall

)

UNION

(
-- B\A
      SELECT std_id
        FROM FootBall
      EXCEPT
      SELECT std_id
        FROM PingPong

);
برچسب های مرتبط