Home » python » MySQL Join di Python

MySQL Join di Python

by Catur Kurnia Sari
by Catur Kurnia Sari

Section Artikel

Join Dua Tabel atau Lebih

Kita dapat menggabungkan baris dari dua atau beberapa tabel, berdasarkan kolom terkait di antara mereka, dengan menggunakan pernyataan JOIN.

Misalnya kita memiliki tabel “user” dan tabel “products”:

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

Kedua tabel ini dapat digabungkan dengan menggunakan kolom fav pada users dan kolom id pada products.

Contoh:
Gabungkan users dan products untuk melihat nama produk favorit pengguna

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="myusername",
  password="mypassword",
  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)

Catatan: Anda dapat menggunakan JOIN sebagai ganti INNER JOIN. Keduanya akan memberiksn hasil yang sama.

LEFT JOIN

Pada contoh di atas, Hannah, dan Michael akan dikecualikan dari hasil tersebut, karena INNER JOIN hanya menampilkan record yang terdapat kecocokan.

Jika Anda ingin menampilkan semua pengguna, meskipun mereka tidak memiliki produk favorit, gunakan pernyataan LEFT JOIN:

Contoh:
Pilih semua pengguna dan produk favorit mereka

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="myusername",
  password="mypassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "SELECT \
  users.name AS user, \
  products.name AS favorite \
  FROM users \
  LEFT JOIN products ON users.fav = products.id"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
  print(x)

RIGHT JOIN

Jika Anda ingin mengembalikan hasil semua produk, dan pengguna yang memilki produk favorit tersebut, meskipun tidak ada pengguna yang menjadikannya favorit, gunakan pernyataan RIGHT JOIN.

Contoh
Pilih semua produk, dan pengguna yang menjadikan produk favorit mereka

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="myusername",
  password="mypassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "SELECT \
  users.name AS user, \
  products.name AS favorite \
  FROM users \
  RIGHT JOIN products ON users.fav = products.id"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
  print(x)

Catatan: Hannah dan Michael, yang tidak memiliki produk favorit, tidak termasuk dalam hasil pencarian.

You may also like