Python MySQL Doe mee
Deelnemen aan twee of meer tafels
U kunt rijen uit twee of meer tabellen combineren, gebaseerd op een gerelateerde kolom ertussen, door een JOIN-instructie te gebruiken.
Stel dat u een tabel "gebruikers" en een tabel "producten" heeft:
gebruikers
{ 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:}
producten
{ id: 154, name:
'Chocolate Heaven' },
{ id: 155, name: 'Tasty Lemons' },
{
id: 156, name: 'Vanilla Dreams' }
Deze twee tabellen kunnen worden gecombineerd door het gebruikersveld fav
en het productveld
id
te gebruiken.
Voorbeeld
Word lid van gebruikers en producten om de naam van het favoriete product van de gebruiker te zien:
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)
Opmerking: u kunt JOIN gebruiken in plaats van INNER JOIN. Ze geven je allebei hetzelfde resultaat.
LINKS DOEN
In het bovenstaande voorbeeld zijn Hannah en Michael uitgesloten van het resultaat, omdat INNER JOIN alleen de records toont waar een overeenkomst is.
Als je alle gebruikers wilt laten zien, ook als ze geen favoriet product hebben, gebruik dan het LEFT JOIN statement:
Voorbeeld
Selecteer alle gebruikers en hun favoriete product:
sql = "SELECT \
users.name AS user,
\
products.name AS favorite \
FROM users \
LEFT JOIN
products ON users.fav = products.id"
RECHTS AANMELDEN
Als je alle producten wilt retourneren, en de gebruikers die ze als favoriet hebben, zelfs als geen enkele gebruiker ze als favoriet heeft, gebruik dan het RIGHT JOIN statement:
Voorbeeld
Selecteer alle producten en de gebruiker(s) die ze als favoriet hebben:
sql = "SELECT \
users.name AS user,
\
products.name AS favorite \
FROM users \
RIGHT JOIN
products ON users.fav = products.id"
Let op: Hannah en Michael, die geen favoriet product hebben, worden niet meegerekend in het resultaat.