MySQL Join
join کردن دو یا چند جدول با هم
با دستور JOIN میتوان سطرهای دو یا چند جدول را با توجه به ستون ها با هم ترکیب کرد.
دو جدول کاربران “users” و محصولات “products” را با توجه به شرایط زیر در نظر بگیرید.


این دو جدول را میتوانیم با توجه به ستون “fav” در جدول کاربران و ستون “id” در جدول محصولات با هم ترکیب کنیم.
مثال: جداول فوق را به منظور دیدن نام محصول مورد علاقه هر فرد با هم ترکیب میکنیم.
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
passwd="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT \
users.name AS user,
\
products.name AS favorite \
FROM users \
INNER JOIN
products ON users.fav = products.id"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
LEFT JOIN
در مثال قبلی hannah و Michael از نتایج حذف شدند چون دستور “INNER JOIN” تنها نتایجی که کاملا مطابقت دارند نمایش میدهد.
اگر بخواهیم کاربرانی که حتی هیچ محصول مورد علاقه “fav” ندارند هم در نتایج داشته باشیم باید از دستور “LEFT JOIN” استفاده کرد.
sql = "SELECT \
users.name AS user,
\
products.name AS favorite \
FROM users \
LEFT JOIN
products ON users.fav = products.id"
RIGHT JOIN
اگر بخواهیم تمام محصولات را نمایش دهیم به همراه کاربرانی که به آن ها علاقه دارند باید از دستور RIGHT JOIN استفاده کنیم. (محصولاتی که مورد علاقه هیچ کاربری نباشند هم انتخاب میشوند)
مثال: انتخاب همه کحصولات و کاربرانی که به آن ها علاقه دارند.
sql = "SELECT \
users.name AS user,
\
products.name AS favorite \
FROM users \
RIGHT JOIN
products ON users.fav = products.id"