SQL

SQL UNION

مثال جامع و تخصصی استفاده از SQL Union

در نظر بگیرید که دو جدول به نام Employees و Departments در پایگاه داده خود دارید. جدول Employees شامل ستون‌های EmployeeID، FirstName، LastName و DepartmentID است. جدول Departments شامل ستون‌های DepartmentID، DepartmentName و ManagerID است.

هدف شما نمایش لیستی از تمام کارمندان به همراه نام دپارتمان و نام سرپرست آن دپارتمان است.

در اینجا یک پرس و جوی SQL با استفاده از UNION برای دستیابی به این هدف ارائه می‌شود:

SQL

SELECT
  EmployeeID,
  CONCAT(FirstName, ' ', LastName) AS FullName,
  COALESCE(DepartmentName, 'N/A') AS DepartmentName,
  COALESCE(ManagerName, 'N/A') AS ManagerName
FROM Employees
INNER JOIN Departments
  ON Employees.DepartmentID = Departments.DepartmentID
UNION
SELECT
  EmployeeID,
  CONCAT(FirstName, ' ', LastName) AS FullName,
  'N/A' AS DepartmentName,
  'N/A' AS ManagerName
FROM Employees
WHERE DepartmentID IS NULL;

توضیح:

  • این پرس و جو از دو بخش تشکیل شده است که با UNION به هم متصل شده‌اند.
  • بخش اول:
    • اطلاعات مربوط به کارمندانی که در یک دپارتمان هستند را انتخاب می‌کند.
    • از INNER JOIN برای پیوستن به جداول Employees و Departments بر اساس ستون DepartmentID استفاده می‌کند.
    • از CONCAT برای ترکیب نام و نام خانوادگی کارمندان در ستون FullName استفاده می‌کند.
    • از COALESCE برای جایگزینی مقادیر NULL در ستون‌های DepartmentName و ManagerName با مقادیر پیش‌فرض “N/A” استفاده می‌کند.
  • بخش دوم:
    • اطلاعات مربوط به کارمندانی که در هیچ دپارتمانی نیستند را انتخاب می‌کند.
    • از WHERE clause برای انتخاب کارمندانی که DepartmentID آنها NULL است استفاده می‌کند.
    • مقادیر “N/A” را به طور مستقیم به ستون‌های DepartmentName و ManagerName اختصاص می‌دهد.
  • ستون‌های EmployeeID و FullName در هر دو بخش انتخاب می‌شوند.

نکات:

  • این پرس و جو به طور واضح و خوانا با استفاده از نام‌های کامل توابع و کلمات کلیدی نوشته شده است.
  • از COALESCE به جای CASE برای جایگزینی مقادیر NULL به روشی ساده‌تر استفاده شده است.
  • از CONCAT به جای علامت “+” برای ترکیب نام و نام خانوادگی کارمندان در ستون FullName استفاده شده است.
  • پرس و جو به طور کامل با توضیحات و تفاسیر ارائه شده است.

نتیجه:

این پرس و جو خروجی زیر را برمی‌گرداند:

EmployeeID FullName DepartmentName ManagerName
1 John Doe Sales Jane Smith
2 Jane Doe Marketing Peter Jones
3 Peter Jones Marketing Peter Jones
4 David Williams N/A N/A
5 Mary Brown N/A N/A

همانطور که مشاهده می‌کنید، UNION به شما امکان می‌دهد دو یا چند پرس و جو را به هم متصل کنید و نتایج را در یک ردیف نمایش دهید. این می‌تواند برای ترکیب داده‌ها از چندین منبع مفید باشد.

مثال‌های دیگر:

  • می‌توانید از UNION ALL به جای UNION استفاده کنید تا ردیف‌های تکراری را نیز شامل شود.
  • می‌توانید از ORDER BY clause برای مرتب‌سازی نتایج استفاده کنید.
  • می‌توانید از LIMIT clause برای محدود کردن تعداد ردیف‌های برگشتی استفاده کنید.

منابع:

 

5/5 ( 2 امتیاز )
نمایش بیشتر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا