Computer >> Máy Tính >  >> Lập trình >> Python

Làm thế nào bạn có thể thực hiện kết hợp đầy đủ trên hai bảng bằng MySQL trong Python?

Chúng ta có thể nối hai bảng trong SQL dựa trên một cột chung giữa chúng hoặc dựa trên một số điều kiện cụ thể. Có sẵn các loại JOIN khác nhau để nối hai bảng SQL.

Ở đây, chúng ta sẽ thảo luận về phép nối ĐẦY ĐỦ trên hai bảng. Trong FULL JOIN, tất cả các bản ghi từ cả hai bảng đều được đưa vào kết quả. Đối với các bản ghi không tìm thấy kết quả phù hợp, NULL được chèn vào một trong hai bên.

Cú pháp

SELECT column1, column2...
FROM table_1
FULL JOIN table_2 ON condition;

Để có hai bảng, “Sinh viên” và “Bộ phận” như những người theo sau -

Học sinh

+----------+--------------+-----------+
|    id    | Student_name | Dept_id   |
+----------+--------------+-----------+
|    1     |    Rahul     |    120    |
|    2     |    Rohit     |    121    |
|    3     |    Kirat     |    121    |
|    4     |    Inder     |    123    |
+----------+--------------+-----------+

Bộ phận

+----------+-----------------+
| Dept_id  | Department_name |
+----------+-----------------+
|    120   |    CSE          |
|    121   |    Mathematics  |
|    122   |    Physics      |
+----------+-----------------+

Chúng tôi sẽ thực hiện kết hợp đầy đủ trên các bảng trên dựa trên dept_id phổ biến trong cả hai bảng.

Các bước để thực hiện kết hợp đầy đủ trên hai bảng bằng MySQL trong python

  • nhập trình kết nối MySQL

  • thiết lập kết nối với trình kết nối bằng connect ()

  • tạo đối tượng con trỏ bằng phương thức cursor ()

  • tạo một truy vấn bằng cách sử dụng các câu lệnh mysql thích hợp

  • thực hiện truy vấn SQL bằng phương thức execute ()

  • đóng kết nối

Ví dụ

import mysql.connector
db=mysql.connector.connect(host="your host", user="your username", password="yourpassword",database="database_name")

cursor=db.cursor()
query="SELECT Students.Id,Students.Student_name,Department.Department_name
FROM Students FULL JOIN Department ON Students.Dept_Id=Department.Dept_Id"
cursor.execute(query)
rows=cursor.fetchall()
for x in rows:
   print(x)

db.close()

Đầu ra

(1, ‘Rahul’, ‘CSE’)
(2, ‘Rohit’, ‘Mathematics’)
(3, ‘Kirat’, ‘Mathenatics’)
(4, ‘Inder’, None)
(None, ‘Physics’)

Lưu ý, tất cả các bản ghi từ cả hai bảng đều được đưa vào kết quả mặc dù không có bản ghi nào phù hợp cho một số bản ghi.