مدل های JOIN
نامهای سفارشی
از نام های سفارشی می توان برای جداول نیز استفاده کرد. با دادن "نام مستعار" به جداول می توانید دستورات join را کوتاه کنید:
SELECT ct.ID, ct.Name, ord.Name, ord.Amount
FROM customers AS ct, orders AS ord
WHERE ct.ID=ord.Customer_ID
ORDER BY ct.ID;
نکته: همانطور که مشاهده می کنید ، ما نام جدول را کوتاه کردیم همانطور که از آن در درخواست خود استفاده کردیم.
انواع عضویت
در زیر انواع JOIN قابل استفاده در MySQL آورده شده است:
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
INNER JOIN
INNER JOIN معادل JOIN است. هنگامی که بین جدول ها مطابقت دارد ردیف ها را برمی گرداند.
SELECT column_name(s)
FROM table1 INNER JOIN table2
ON table1.column_name=table2.column_name;
نکته: برای تعیین شرایط اتصال داخلی به کلمه کلیدی ON توجه کنید.
تصویر زیر نحوه کار INNER JOIN را نشان می دهد:
نکته: فقط سوابق مطابق با شرایط پیوستن برگردانده می شوند.
LEFT JOIN
LEFT JOIN تمام ردیف ها را از جدول سمت چپ برمی گرداند ، حتی اگر در جدول سمت راست مطابقت نداشته باشد.
این بدان معناست که اگر در جدول سمت راست مطابقت با بند ON وجود نداشته باشد ، join همچنان ردیف های جدول اول را در نتیجه برمی گرداند.
نحو اصلی LEFT JOIN به شرح زیر است:
SELECT table1.column1, table2.column2...
FROM table1 LEFT OUTER JOIN table2
ON table1.column_name = table2.column_name;
نکته: کلمه کلیدی OUTER اختیاری است و می توان آن را حذف کرد.
تصویر زیر نحوه کار با LEFT JOIN را نشان می دهد:
جداول زیر را در نظر بگیرید.
مشتریان:
آیتم ها:
دستور SQL زیر همه مشتریان و مواردی که ممکن است داشته باشند را برمی گرداند:
SELECT customers.Name, items.Name
FROM customers LEFT OUTER JOIN items
ON customers.ID=items.Seller_id;
خروجی:
مجموعه نتایج شامل همه ردیف های جدول سمت چپ و داده های منطبق از جدول سمت راست است.
نکته: اگر برای یک ردیف خاص مطابقت پیدا نشود ، NULL بازگردانده می شود.
RIGHT JOIN
RIGHT JOIN همه ردیف ها را از جدول سمت راست برمی گرداند ، حتی اگر در جدول سمت چپ مطابقت نداشته باشد.
syntax اصلی RIGHT JOIN به شرح زیر است:
SELECT table1.column1, table2.column2...
FROM table1 RIGHT OUTER JOIN table2
ON table1.column_name = table2.column_name;
نکته: باز هم ، کلمه کلیدی OUTER اختیاری است و می توان آن را حذف کرد.
همان مثال قبلی ما را در نظر بگیرید ، اما این بار با یک RIGHT JOIN:
SELECT customers.Name, items.Name FROM customers
RIGHT JOIN items ON customers.ID=items.Seller_id;
خروجی:
RIGHT JOIN تمام ردیف ها را از جدول سمت راست (موارد) برمی گرداند ، حتی اگر در جدول سمت چپ مطابقت نداشته باشد (مشتریان).
نکته: انواع دیگری از پیوستن به زبان SQL وجود دارد ، اما توسط MySQL پشتیبانی نمی شود.