در نظر بگیرید که دو جدول به نام 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 |
|---|---|---|
| 1 | John Doe | New York |
| 2 | Jane Doe | Los Angeles |
| 3 | Peter Jones | Chicago |
و فرض کنید در جدول Orders دادههای زیر وجود داشته باشد:
| OrderID | CustomerID | ProductCode |
|---|---|---|
| 1 | 1 | ABC |
| 2 | 2 | DEF |
| 3 | 4 | GHI |
با اجرای پرس و جوی INTERSECT خروجی زیر را دریافت میکنیم:
| CustomerID |
|---|
| 1 |
همانطور که مشاهده میکنید، INTERSECT فقط شناسه مشتری (CustomerID) را برمیگرداند که در هر دو جدول Customers و Orders وجود دارد (در این مثال، مشتری با شناسه ۱ سفارش ثبت کرده است).
مثالهای دیگر:
- میتوانید از
UNIONیاUNION ALLبرای ترکیب نتایج از چندین پرس و جو استفاده کنید. - میتوانید از
EXCEPTبرای یافتن رکوردهایی که در یک جدول هستند ولی در جدول دیگر نیستند استفاده کنید. - میتوانید از
WHEREclause برای فیلتر کردن نتایج قبل از استفاده ازINTERSECTاستفاده کنید.



