Chọn nhiều bảng tại lệnh From trong Oracle

Ở các bài trên mình đã hướng dẫn bạn sử dụng lệnh FROM để lấy dữ liệu từ một bảng. Tuy nhiên bạn cũng có thể chọn nhiều bảng tại FROM, lúc này Oracle sẽ thực hiện phép tích đề cát để tạo ra một bảng mới chứa toàn bộ thông tin của hai bảng.

1. Tích đề cát ở From trong Oracle

Phép tích đề cát 2 tables chính là bạn sẽ lấy từng record của mỗi table gộp lại với nhau. ví dụ table A có 10 records, table B có 5 records thì khi thích hiện tích đề cát sẽ tạo ra 10x5=50 records. Nó sẽ lấy 1 record của bảng A hợp với lần lượt từng record ở bảng B, tiếp theo sẽ record thứ 2 ở bảng A và hợp với lần lượt từng record ở bảng B, ... Cứ như vậy cho đến khi nào bảng A hết thì thôi.

Giả sử bảng A có dữ liệu như sau:

ID Name
1 Cường
2 Kính

Bảng B có dữ liệu như sau:

City Country
Hà Nội Việt Nam
Đà Nẵng Việt Nam
Hồ Chí Minh Việt Nam

Nếu ta thực hiện tích đề cát với lệnh SQL sau:

SELECT * FROM A, B

Thì kết quả sẽ trả về như sau:

ID Name City Country
1 Cường Hà Nội Việt Nam
1 Cường Đà Nẵng Việt Nam
1 Cường Hồ Chí Minh Việt Nam
2 Kính Hà Nội Việt Nam
2 Kính Đà Nẵng Việt Nam
2 Kính Hồ Chí Minh Việt Nam

Như vậy phép tích đề cát sẽ trả về một lượng records tương đối lớn, vì vậy tương lai ta sẽ sử dụng lệnh JOIN thay vì thực hiện phép tích như thế này.

Bạn cũng có thể khắc phục bằng thêm điều kiện ở where để lọc, nhưng bản chất nó cũng sẽ trả về hết danh sách rồi mới lọc, vì vậy vẫn chưa tối ưu bằng JOIN (sẽ học sau).

2. Một ví dụ khác với From trong Oracle

Bây giờ mình sẽ dịch lại ví dụ ở trang javatpoint.

Giả sử có bảng suppliers như sau:

Và bảng Order1 như sau:

Mình sẽ viết câu truy vấn như sau:

SELECT suppliers.supplier_id, suppliers.supplier_name, order1.order_number  
FROM suppliers, order1  
WHERE suppliers.supplier_id = order1.supplier_id;  

Kết quả sẽ trả về như hình sau:

3. Lời kết

Như vậy trong bài này mình đã giới thiệu xong phép tích đề cát trong Oracle, hay nói cách khác là cách sử dụng nhiều table ở mệnh đề FROM khi truy vấn SELECT.

Cái quan trọng nhất của bài này là bạn phải hiểu bản chất của phép tích đề cát thì sau này bạn mới hiểu và so sánh được với phép JOIN.

-------------------#####-------------------

Lưu ý: bài viết có tham khảo hoặc dịch lại từ http://javatpoint.com.

Nguồn: freetuts.net