Rejoindre Python MySQL
Joindre deux tables ou plus
Vous pouvez combiner des lignes de deux tables ou plus, en fonction d'une colonne liée entre elles, à l'aide d'une instruction JOIN.
Considérez que vous avez une table "utilisateurs" et une table "produits":
utilisateurs
{ 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:}
des produits
{ id: 154, name:
'Chocolate Heaven' },
{ id: 155, name: 'Tasty Lemons' },
{
id: 156, name: 'Vanilla Dreams' }
Ces deux tables peuvent être combinées en utilisant le champ des utilisateurs fav
et le champ des produits
id
.
Exemple
Rejoignez les utilisateurs et les produits pour voir le nom du produit préféré des utilisateurs :
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="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)
Remarque : Vous pouvez utiliser JOIN au lieu de INNER JOIN. Ils vous donneront tous les deux le même résultat.
JOINT GAUCHE
Dans l'exemple ci-dessus, Hannah et Michael ont été exclus du résultat, car INNER JOIN affiche uniquement les enregistrements où il existe une correspondance.
Si vous souhaitez afficher tous les utilisateurs, même s'ils n'ont pas de produit favori, utilisez l'instruction LEFT JOIN :
Exemple
Sélectionnez tous les utilisateurs et leur produit préféré :
sql = "SELECT \
users.name AS user,
\
products.name AS favorite \
FROM users \
LEFT JOIN
products ON users.fav = products.id"
JOINDRE À DROITE
Si vous souhaitez renvoyer tous les produits et les utilisateurs qui les ont comme favoris, même si aucun utilisateur ne les a comme favoris, utilisez l'instruction RIGHT JOIN :
Exemple
Sélectionnez tous les produits et le ou les utilisateurs qui les ont comme favoris :
sql = "SELECT \
users.name AS user,
\
products.name AS favorite \
FROM users \
RIGHT JOIN
products ON users.fav = products.id"
Remarque : Hannah et Michael, qui n'ont pas de produit préféré, ne sont pas inclus dans le résultat.