آموزش UNION در MySql

Image تحقیقات

آموزش UNION در MySql

سلام خدمت شما دوستان عزیز

در این مقاله می خواهم درباره MySQL UNION صحبت کنم و اینکه با استفاده از MySQL UNION  چجوری می توانیم دو یا چند ستون از جداول مختلف را باهم ترکیب کنیم .

 

MySQL UNION

MySQL UNION به شما این اجازه را می دهد که از جداول مختلف , ستون های مختلف را باهم ترکیب کنید .مثلا ستون a از جدول A را با ستون b از جدول B ترکیب کنید و نتیجه را در یک ستون نشان دهید .

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION ALL
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

خب یه سری قواعد هم هست که باید رعایت کنید :

  • تعداد ستون هایی که میخواهیم در دو طرف select داشته باشیم باید یکسان باشند. مثلا ستون a و b را می توان با ستون a , b از جدول دیگری ترکیب کرد ولی نمیتوان یک طرف select یک ستون باشد و طرف دیگری دو ستون .
  • ستون هایی که در دو طرف select هستند باید data type یکسانی داشته باشند یا data type ای داشته باشند که Mysql بتواند آنها را به هم تبدیل کند . (برای مثال هر دو فیلد int یا varchar باشند )

ممکنه در دو ستون مقادیر یکسانی نیز وجود داشته باشد. mysql به صورت پیش فرض این مقادیر مشترک را شناسایی و از تکرار آن جلوگیری می کند حتی اگر از DISTINCT در دستور Union استفاده نکنید .

چنانچه می خواهید مقادیر تکراری را نیز نشان دهید کافی است از UNION ALL استفاده کنید .

SELECT supplier_id
FROM suppliers
UNION ALL
SELECT supplier_id
FROM orders
ORDER BY supplier_id;
  • در خط شماره 3 از UNION ALL استفاده کرده ام .

مثال دیگر  :

فرض کنید می خواهم دو ستون از جدول customers را با دو ستون از جدول employees با استفاده از UNION ترکیب کنم.

SELECT customerNumber id, contactLastname name
FROM customers
UNION
SELECT employeeNumber id,firstname name
FROM employees
  • در خط شماره 1 فیلد customerNumber با نام مستعار Id و فیلد contactLastname با نام مستعار name از جدول customers با فیلد employeeNumber با نام مستعار id و فیلد firstname با نام مستعار name ترکیب (UNION) کرده ایم.

خروجی  :

آموزش UNION

آموزش UNION

در مثال بالا چون از نام مستعار (Alias) برای فیلدها استفاده کردیم , عنوان ستون ها همان نام مستعار ما است ولی اگر نام مستعاری (Alias) انتخاب نکنید , MySql مقدار ستون های جدول اول را به عنوان نام ستون قرار می دهد .

مثال :

(SELECT customerNumber, contactLastname
FROM customers)
UNION
(SELECT employeeNumber, firstname
FROM employees)
ORDER BY contactLastname, customerNumber

 

  • در این مثال نام های مستعار را حدف کردیم  که در این صورت عنوان جدول نهایی (شکل پایین ) همان عنوان ستون های جدول اول ( یا همان select اول ) انتخاب می شود .

آموزش UNIONآموزش UNION

مثال دیگر :

در این مثال می خواهم از ORDER BY نیز استفاده کنم .

اگر شما بخواهید نتیجه ی کويری UNION را مرتب نمایید باید از ORDER BY استفاده کنید .

(SELECT customerNumber id,contactLastname name
FROM customers)
UNION
(SELECT employeeNumber id,firstname name
FROM employees)
ORDER BY name,id

 

آموزش UNION

آموزش UNION

  • توجه کنید که در مثال بالا جملات select را داخل پرانتز گذاشتیم و order by در آخر این پرانتز ها می باشد .
  • همچنین در قسمت ORDER BY می توانید به جای نوشتن نام ستون از جایگاه (position ) آن نیز استفاده کنیم و جایگاه آن را قرار دهیم . این امکان در مواردی که از نام مستعار در UNION استفاده نمی کنیم و همچنین ستون های های متناظر دو جدول دارای نام های مختلفی هستند و می خواهیم نتیجه ی نهایی را SORT کنیم , به ما کمک می کند.
SELECT supplier_id, supplier_name
FROM suppliers
WHERE supplier_id > 2000
UNION ALL
SELECT company_id, company_name
FROM companies
WHERE company_id > 1000
ORDER BY 1;
  • در خط شماره 8 به جای اینکه جلوی ORDER BY نام فیلد را بنویسیم , جایگاه (position ) آن را نوشته ایم .

آموزش UNIONآموزش UNION

خب مقاله امروز هم به پایان رسید.خوشحال میشم مثل همیشه نظراتتون رو اعلام کنید.