اتصال جداول در پایگاه داده MySQL
به دو یا چند جدول بپیوندید
با استفاده از یک دستور JOIN می توانید ردیف های دو یا چند جدول را بر اساس یک ستون مرتبط بین آنها ترکیب کنید.
در نظر بگیرید که یک جدول "کاربران" و یک جدول "محصولات" دارید:
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' }
این دو جدول را می توان با استفاده از قسمت علاقه کاربران و شناسه محصولات ترکیب کرد.
برای مثال در قطعه کد زیر برای دیدن نام کالای مورد علاقه کاربران به کاربران و محصولات بپیوندید:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="myusername",
passwd="mypassword",
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)
خروجی:
('John', 'Chocolate Heaven')
('Peter', 'Chocolate Heaven')
('Amy', 'Tasty Lemon')
توجه: می توانید به جای INNER JOIN از JOIN استفاده کنید. هر دو نتیجه یکسانی به شما می دهند.
LEFT JOIN
در مثال بالا ، هانا و مایکل از نتیجه حذف شدند ، زیرا INNER JOIN فقط سوابق را در جاهایی که تطابق دارد نشان می دهد.
اگر می خواهید به همه کاربران نشان دهید ، حتی اگر محصول مورد علاقه ای ندارند ، از عبارت LEFT JOIN استفاده کنید:
برای مثال در قطعه کد زیرهمه کاربران و محصول مورد علاقه آنها را انتخاب کنید:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="myusername",
passwd="mypassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT \
users.name AS user, \
products.name AS favorite \
FROM users \
LEFT JOIN products ON users.fav = products.id"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
خروجی:
('John', 'Chocolate Heaven')
('Peter', 'Chocolate Heaven')
('Amy', 'Tasty Lemon')
('Hannah', None)
('Michael', None)
RIGHT JOIN
اگر می خواهید همه محصولات را بازگردانید و کاربرانی که آنها را به عنوان مورد علاقه خود دارند ، حتی اگر هیچ کاربری آنها را به عنوان مورد علاقه خود نداشته باشد ، از عبارت RIGHT JOIN استفاده کنید:
برای مثال در قطعه کد زیر همه محصولات و کاربر (ها) را که به عنوان محصولات موردعلاقه خود دارند انتخاب کنید:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="myusername",
passwd="mypassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT \
users.name AS user, \
products.name AS favorite \
FROM users \
RIGHT JOIN products ON users.fav = products.id"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
خروجی:
('John', 'Chocolate Heaven')
('Peter', 'Chocolate Heaven')
('Amy', 'Tasty Lemon')
(None, 'Vanilla Dreams')
توجه: Hannah و Michael ، که هیچ کالای مورد علاقه ای ندارند ، در نتیجه لحاظ نمی شوند.