در پایگاههای داده رابطهای، اطلاعات معمولاً در چند جدول جدا ذخیره میشوند. اما وقتی گزارش میگیرید، اغلب لازم است دادهها را از بیش از یک جدول همزمان بخوانید.
SQL برای این کار از عملیات مجموعهای (Set Operations) استفاده میکند. یکی از مهمترین آنها دستور UNION است که خروجی دو کوئری SELECT را با هم ترکیب میکند و یک نتیجه واحد میسازد.
در این آموزش یاد میگیرید:
-
چطور از UNION استفاده کنید
-
چطور نتایج را فیلتر و مرتب کنید
-
تفاوت UNION و UNION ALL چیست
-
چه اشتباههایی باعث خطا یا خروجی اشتباه میشود
ساختار دستور UNION
فرم کلی:
نکات مهم:
-
هر دو SELECT باید تعداد ستون یکسان داشته باشند
-
نوع داده ستونهای متناظر باید سازگار باشد
-
ترتیب ستونها در هر دو کوئری باید یکسان باشد
-
فقط انتهای کل دستور سمیکالن
;میگیرد
مثال کاربردی
فرض کنید دو جدول داریم:
-
book_purchases→ خرید کتاب -
book_leases→ امانت گرفتن کتاب
میخواهیم لیست تمام مشتریهایی که یا خرید کردهاند یا کتاب امانت گرفتهاند را ببینیم:
خروجی شامل همه افراد میشود، اما نامهای تکراری حذف میشوند.
تفاوت اجرای جداگانه با UNION
اگر دو کوئری را جدا اجرا کنید، نامها تکرار میشوند.
اما UNION:
✔ نتایج را ترکیب میکند
✔ ردیفهای تکراری را حذف میکند
خطاهای رایج در UNION
❌ تعداد ستونها برابر نیست
خطا:The used SELECT statements have a different number of columns
❌ ترتیب ستونها اشتباه است
خطا نمیدهد، ولی خروجی قاطی میشود چون ستون اول با ستون اول ترکیب میشود.
استفاده از WHERE همراه UNION
میتوانید قبل از ترکیب، دادهها را فیلتر کنید:
اینجا فقط کتابهایی که یک مشتری خاص خریده یا امانت گرفته نمایش داده میشود.
مرتبسازی نتایج UNION
مرتبسازی روی نتیجه نهایی انجام میشود:
UNION ALL چیست؟
UNION → تکراریها حذف میشوندUNION ALL → تکراریها حفظ میشوند
مثال:
اگر کتابی هم خرید شده هم امانت گرفته شده باشد، دو بار در خروجی میآید.
مزیت UNION ALL
سریعتر است، چون دیتابیس لازم نیست تکراریها را بررسی کند.
مقایسه UNION و UNION ALL
| ویژگی | UNION | UNION ALL |
|---|---|---|
| حذف داده تکراری | بله | خیر |
| سرعت اجرا | کندتر | سریعتر |
| کاربرد | گزارشهای یکتا | تحلیل تعداد تکرار |
جمعبندی
UNION ابزار قدرتمندی برای ترکیب نتایج چند جدول است.
نکات کلیدی:
-
تعداد و ترتیب ستونها باید یکسان باشد
-
UNION تکراریها را حذف میکند
-
UNION ALL همه دادهها را نگه میدارد
-
میتوان از WHERE و ORDER BY استفاده کرد
-
مرتبسازی روی خروجی نهایی انجام میشود
اگر گزارشگیری حرفهای انجام میدهید، بدون UNION عملاً دارید با دست خالی کار میکنید.

