در نظر بگیرید که دو جدول به نام Customers
و Orders
در پایگاه داده خود دارید. جدول Customers
شامل ستونهای CustomerID
، CustomerName
و City
. جدول Orders
شامل ستونهای OrderID
، CustomerID
و ProductCode
.
هدف شما نمایش لیستی از شناسه مشتریانی است که هم در جدول Customers
و هم در جدول Orders
وجود دارند (یعنی مشتریانی که سفارش ثبت کردهاند).
در اینجا یک پرس و جوی SQL با استفاده از INTERSECT
برای دستیابی به این هدف ارائه میشود:
SQL
SELECT CustomerID
FROM Customers
INTERSECT
SELECT CustomerID
FROM Orders;
توضیح:
- این پرس و جو از دو بخش تشکیل شده است که با
INTERSECT
به هم متصل شدهاند. - هر دو بخش
CustomerID
را از جداول مربوطه انتخاب میکنند. INTERSECT
فقط ردیفهایی را برمیگرداند که در هر دو نتیجه پرس و جوی جداگانه وجود داشته باشند (مشترک باشند).
نکات:
- این پرس و جو به طور واضح و خوانا با استفاده از نامهای کامل توابع و کلمات کلیدی نوشته شده است.
- از
INTERSECT
برای یافتن رکوردهای مشترک در دو جدول استفاده شده است. - پرس و جو به طور کامل با توضیحات و تفاسیر ارائه شده است.
نتیجه:
فرض کنید در جدول Customers
دادههای زیر وجود داشته باشد:
CustomerID | CustomerName | City |
---|---|---|
۱ | John Doe | New York |
۲ | Jane Doe | Los Angeles |
۳ | Peter Jones | Chicago |
و فرض کنید در جدول Orders
دادههای زیر وجود داشته باشد:
OrderID | CustomerID | ProductCode |
---|---|---|
۱ | ۱ | ABC |
۲ | ۲ | DEF |
۳ | ۴ | GHI |
با اجرای پرس و جوی INTERSECT
خروجی زیر را دریافت میکنیم:
CustomerID |
---|
۱ |
همانطور که مشاهده میکنید، INTERSECT
فقط شناسه مشتری (CustomerID
) را برمیگرداند که در هر دو جدول Customers
و Orders
وجود دارد (در این مثال، مشتری با شناسه ۱ سفارش ثبت کرده است).
مثالهای دیگر:
- میتوانید از
UNION
یاUNION ALL
برای ترکیب نتایج از چندین پرس و جو استفاده کنید. - میتوانید از
EXCEPT
برای یافتن رکوردهایی که در یک جدول هستند ولی در جدول دیگر نیستند استفاده کنید. - میتوانید از
WHERE
clause برای فیلتر کردن نتایج قبل از استفاده ازINTERSECT
استفاده کنید.