Les jointures Python / MySQL

Les jointures sont utilisés pour récupérer les données de plusieurs tables. Une jointure MySQL est effectuée chaque fois que deux tables ou plus sont jointes dans une instruction SQL.
 
 
Il existe différents types de jointures MySQL:

  • MySQL INNER JOIN (ou parfois appelé JOIN; une simple jointure)
  • MySQL LEFT OUTER JOIN (ou parfois appelé LEFT JOIN)
  • MySQL RIGHT OUTER JOIN (ou parfois appelé RIGHT JOIN)

Considérez que vous avez une table « Employee » et une table « Holidays »:
 

Table : Holidays
+------+--------+------------+--------+---------------+
|  id  | empId  |    date    |  days  |     reason    |
+------+--------+------------+--------+---------------+
|   1  |    1   | 01/07/2020 |   10   |  Annual Leave |
|   2  |    2   | 25/09/2020 |   5    |  Hospital     |
|   3  |    3   | 30/08/2020 |   11   |  Have a baby  |
+------+--------+------------+--------+---------------+

 

Table : Employee
+------+--------+------------+
|  id  |  name  |   address  |
+------+--------+------------+
|   1  | Alex   | 01/07/2020 |
|   2  | Thomas | 25/09/2020 |
|   3  | Bob    | 30/08/2020 |
+------+--------+------------+

Ces deux tables peuvent être jointes en utilisant le champ empId de la table : holidays et le champ id de la table : Employee.
 
 

Exemple:

Rejoignez la table : Employee et la table : holidays pour voir la raison de départ pour chaque employé:

# -*- coding: utf-8 -*-
import mysql.connector

#connexion au base de données
db = mysql.connector.connect(
  host = "localhost",
  user = "root",
  password = "",
  database = "my_db"
)

#créer un curseur de base de données pour effectuer des opérations SQL
cur = db.cursor()

sql = "SELECT employee.name, holidays.reason \
       FROM employee \
       INNER JOIN holidays ON employee.id = holidays.empId"
	   
#exécuter le curseur avec la méthode execute() et transmis la requête SQL
cur.execute(sql)

#récupèrer toutes les lignes de la dernière instruction exécutée.
res = cur.fetchall()

for line in res:
  print(line)

Sortie:

('Alex', 'Annual Leave')
('Thomas', 'Hospital')
('Bob', 'Have a baby')

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.