Python MySQL Join

Kombiner to eller flere tabeller

Du kan bruge JOIN-sætningen til at kombinere rækker fra to eller flere tabeller baseret på de relaterede kolonner mellem dem.

Antag, at du har "users"-tabellen og "products"-tabellen:

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' }

Man kan bruge users' fav felt og products' id felt til at kombinere to tabeller.

Eksempel

Kombiner brugere og produkter, se hvilke produkter brugerne bedst kan lide:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  passwd="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)

Kør eksempel

Kommentar:Du kan bruge JOIN i stedet for INNER JOIN. Du får samme resultat.

LEFT JOIN

I det foregående eksempel er Hannah og Michael udeladt fra resultaterne, fordi INNER JOIN kun viser matchende poster.

Hvis du ønsker at vise alle brugere, selvom de ikke har nogen foretrukne produkter, skal du bruge LEFT JOIN-sætningen:

Eksempel

Vælg alle brugere samt deres foretrukne produkter:

sql = "SELECT \

  users.name AS user, \

  products.name AS favorite \

  FROM users \

  LEFT JOIN products ON users.fav = products.id"

Kør eksempel

RIGHT JOIN

Hvis du vil returnere alle produkter samt brugerne, der kan lide dem, selvom ingen brugere kan lide disse produkter, skal du bruge RIGHT JOIN-sætningen:

Eksempel

Vælg alle produkter samt brugerne, der kan lide dem:

sql = "SELECT \

  users.name AS user, \

  products.name AS favorite \

  FROM users \

  RIGHT JOIN products ON users.fav = products.id"

Kør eksempel

Kommentar:Hannah og Michael, der ikke er interesseret i nogen produkter, er ikke inkluderet i resultaterne.