MySQL Join

join کردن دو یا چند جدول با هم

با دستور JOIN می‌توان سطرهای  دو یا چند جدول را با توجه به ستون ها با هم ترکیب کرد.

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

users table
products table

این دو جدول را می‌توانیم با توجه به ستون “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"