Hướng dẫn dùng typing union trong PHP
Nếu bạn cần viết hai câu truy vấn SELECT khác nhau nhưng bạn muốn nó trả về một danh sách kết quả duy nhất thì bạn phải sử dụng toán tử UNION. Toán tử này cũng ít khi sử dụng khi bạn viết ứng dụng Web nhưng cũng nên tìm hiểu vì biết đâu sau này cần. Show Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. 1. Toán tử UNION trong MySQLToán tử SELECT column1, column2 UNION [DISTINCT | ALL] SELECT column1, column2 UNION [DISTINCT | ALL] … Bài viết này được đăng tại [free tuts .net] Tuy nhiên khi sử dụng UNION trong MySQL chúng ta cần phải tuân thủ những nguyên tắc sau đây:
Theo mặc định thì
2. Một số ví dụ UNION trong MySQLTrước tiên bạn tạo database, hai tables và thêm một số dữ liệu bằng cách chạy lệnh SQL sau: CREATE DATABASE uni_db; USE uni_db; CREATE TABLE news_1 ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) ) ENGINE = INNODB; CREATE TABLE news_2 ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) ) ENGINE = INNODB; INSERT INTO news_1(title) VALUES('Tin Thoi Su'); INSERT INTO news_1(title) VALUES('Tin The Thao'); INSERT INTO news_1(title) VALUES('Tin Quoc Te'); INSERT INTO news_1(title) VALUES('Tin Do day'); INSERT INTO news_1(title) VALUES('Tin Khung Bo'); INSERT INTO news_2(title) VALUES('Ngay Quoc Te'); INSERT INTO news_2(title) VALUES('Ngay Phu Nu'); INSERT INTO news_2(title) VALUES('The Gioi Do Day'); INSERT INTO news_2(title) VALUES('Chien Tranh The Gioi II'); INSERT INTO news_2(title) VALUES('Du Hoc Vien'); Dữ liệu Table news_1: Dữ liệu trang news_2: Ok, bây giờ ta làm một số ví dụ để các bạn hiểu rõ hợn lệnh Ví dụ 1: Lấy dữ liệu của hai bảng news_1 và news_2 và sau đó gom lại thành một kết quả SELECT id, title FROM news_1 UNION SELECT id, title FROM news_2 Kết quả: Ví dụ 2: Lấy ID của bảng news_1, news_2 và sau đó gom lại thành một kết quả SELECT id FROM news_1 UNION SELECT id FROM news_2 Kết quả: Rõ ràng Bây giờ ta sử dụng lệnh SELECT id FROM news_1 UNION ALL SELECT id FROM news_2 Kết quả: Với lệnh 3. Lời kếtToán tử UNION trong MySQL rất ít sử dụng khi xây dựng ứng dụng website mà thay vào đó sử dụng các lệnh 1) Chức năng của toán tử UNION, UNION ALL- Trong hệ quản trị cơ sở dữ liệu MySQL, toán tử UNION và UNION ALL được dùng để gộp tập kết quả của hai hay nhiều câu lệnh truy vấn dữ liệu (SELECT) lại với nhau. - Trong đó:
2) Cách sử dụng toán tử UNION, UNION ALL- Khi sử dụng toán tử UNION hoặc UNION ALL thì chúng ta cần phải tuân thủ các quy tắc như sau:
- Dưới đây là cú pháp sử dụng toán tử UNION:
- Dưới đây là cú pháp sử dụng toán tử UNION ALL:
3) Tham khảo một số ví dụ- Trong bài học này, tôi sẽ sử dụng hai cái bảng Customers & SinhVien như bên dưới để làm ví dụ minh họa.
- Gộp các khách hàng & sinh viên (sống tại Cần Thơ) vào chung một bảng. - Lưu ý: Chỉ lấy các thông tin HỌ TÊN, TUỔI, THÀNH PHỐ
- Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như bên dưới:
- Khi chúng ta gộp kết quả từ hai hay nhiều câu lệnh truy vấn dữ liệu (SELECT) lại với nhau thì mặc định tên cột trên cái bảng kết hợp sẽ được lấy từ tên của các cột ở trong câu lệnh truy vấn thứ nhất (điển hình như trong ví dụ 1, tên của các cột là CustomerName, Age, City chứ không phải là HoTen, Tuoi, ThanhPho) - Để thay đổi tên cột trên bảng kết hợp thì các bạn có thể sử dụng lệnh AS để đặt bí danh cho các cột. - Ví dụ:
- Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như bên dưới:
- Gộp các khách hàng & sinh viên vào chung một bảng. - Lưu ý: Chỉ lấy HỌ TÊN, TUỔI, THÀNH PHỐ, sắp xếp các kết quả theo thứ tự giảm dần dựa trên độ tuổi.
- Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như bên dưới:
- Liệt kê tên của tất cả các khách hàng & sinh viên. - Lưu ý: Họ tên trong cái bảng kết hợp không được phép trùng nhau.
- Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như bên dưới:
- Gộp các khách hàng & sinh viên vào chung một bảng. - Lưu ý: Tạo thêm một cột PHÂN_LOẠI để cho biết đó là khách hàng hay sinh viên.
- Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như bên dưới:
|