Python MySQL Join

دمج جداول إثنين أو أكثر

يمكنك استخدام جملة JOIN لدمج سطرين من عدة جداول بناءً على الأعمدة المرتبطة.

افترض أن لديك جدول "المستخدمين" وجدول "المشاريع":

المستخدمين

{ الرقم_المستقل: 1، الاسم: 'John', المفضل: 154},
{ الرقم_المستقل: 2، الاسم: 'Peter', المفضل: 154},
{ الرقم_المستقل: 3، الاسم: 'Amy', المفضل: 155},
{ الرقم_المستقل: 4، الاسم: 'Hannah', المفضل:},
{ الرقم_المستقل: 5، الاسم: 'Michael', المفضل:}

المشاريع

{ الرقم_المستقل: 154، الاسم: 'Chocolate Heaven' },
{ الرقم_المستقل: 155، الاسم: 'Tasty Lemons' },
{ الرقم_المستقل: 156، الاسم: 'Vanilla Dreams' }

يمكنك استخدام حقل المستخدمين المفضل حقل والمشاريع الرقم_المستقل حقل لتجميع هذين الجدولين.

实例

دمج المستخدمين والمنتجات، لمعرفة المنتج المفضل للمستخدم:

استيراد محرك_المعالجة_المكتبية
محرك_المعالجة_المكتبية = الاتصال_بمحرك_المعالجة_المكتبية_المصمم_للمعالجة_المكتبية(
  المضيف = "المضيف_المحلي",
  اسم_المستخدم = "اسم_المستخدم_الخاصة_بك".,
  كلمة_المرور = "كلمة_المرور_الخاصة_بك".,
  قاعدة_البيانات = "قاعدة_بيانات_المعالجة_المكتبية"
)
مؤشر = محرك_المعالجة_المكتبية_المصمم_للمعالجة_المكتبية
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)

运行实例

注释:您可以使用 JOIN 而不是 INNER JOIN。您都会得到相同的结果。

LEFT JOIN

在上例中,Hannah 和 Michael 被排除在结果之外,这是因为 INNER JOIN 只显示匹配的记录。

如果希望显示所有用户,即使他们没有喜欢的产品,请使用 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"

运行实例

注释:不对任何产品感兴趣的 Hannah 和 Michael 不包括在结果中。