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.