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ề sự tham gia của SELF trên hai bảng.
Như tên biểu thị, phép nối SELF là phép nối với chính bảng. Phép nối này được thực hiện giữa hai bản sao của cùng một bảng. Các hàng của bảng được so khớp với các hàng khác của cùng một bảng dựa trên một số điều kiện.
Cú pháp
SELECT a.coulmn1 , b.column2 FROM table_name a, table_name b WHERE condition;
a và b là hai bí danh của cùng một bảng.
table_name là tên của bảng mà tự tham gia sẽ được thực hiện. Tên bảng giống nhau được sử dụng ở cả hai nơi vì chúng tôi đang thực hiện tự kết hợp.
Để có một bảng có tên “Học sinh” là 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 | +----------+--------------+-----------+
Chúng ta sẽ thực hiện tự nối trên bảng trên dựa trên điều kiện a.Dept_id
Các bước để thực hiện tự nối 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="your password",database="database_name") cursor=db.cursor() query="SELECT a.Dept_id,b.Student_name FROM Students a, Students b WHERE a.Dept_id<b.Dept_id" cursor.execute(query) rows=cursor.fetchall() for x in rows: print(x) db.close()
Đầu ra
Dept_id | Tên_ sinh viên |
---|---|
120 | Rohit |
120 | Kirat |
120 | Dấu đầu dòng |
121 | Dấu đầu dòng |
121 | Dấu đầu dòng |