Python MySQL Join

ترکیب دو یا چند جدول

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

فرض کنید شما جدول "users" و جدول "products" دارید:

users

{ id: 1, name: 'John', fav: 154},
{ id: 2, name: 'Peter', fav: 154},
{ id: 3, name: 'Amy', fav: 155},
{ id: 4, name: 'Hannah', fav:},
{ id: 5, name: 'Michael', fav:}

products

{ id: 154, name: 'Chocolate Heaven' },
{ id: 155, name: 'Tasty Lemons' },
{ id: 156, name: 'Vanilla Dreams' }

می‌توان از فیلد users استفاده کرد 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 \

  JOIN درونی products ON users.fav = products.id"
mycursor.execute(sql)
myresult = mycursor.fetchall()
برای x در myresult:
  print(x)

اجرای نمونه

نکته:می‌توانید از JOIN به جای INNER JOIN استفاده کنید. شما نتایج مشابهی را دریافت خواهید کرد.

JOIN چپ

در مثال بالا، Hannah و Michael در نتایج گنجانده نشده‌اند زیرا INNER JOIN تنها ثبت‌های تطابق یافته را نمایش می‌دهد.

اگر می‌خواهید تمام کاربران را حتی اگر هیچ محصولی مورد علاقه آن‌ها نیست، نمایش دهید، از دستور LEFT JOIN استفاده کنید:

نمونه

تمام کاربران و محصولات مورد علاقه آن‌ها را انتخاب کنید:

sql = "SELECT \

  users.name AS user, \

  products.name AS favorite \

  FROM users \

  JOIN چپ products ON users.fav = products.id"

اجرای نمونه

JOIN راست

اگر می‌خواهید تمام محصولات و کاربرانی که آن‌ها را دوست دارند را بازگردانید، حتی اگر هیچ کاربری این محصولات را دوست ندارد، از دستور RIGHT JOIN استفاده کنید:

نمونه

تمام محصولات و کاربرانی که آن‌ها را دوست دارند انتخاب کنید:

sql = "SELECT \

  users.name AS user, \

  products.name AS favorite \

  FROM users \

  JOIN راست products ON users.fav = products.id"

اجرای نمونه

نکته:Hannah و Michael که به هیچ محصولی علاقه‌مند نیستند در نتایج گنجانده نمی‌شوند.