06/04/2021, 14:51

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

Ở 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 ...

Ở 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:

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

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:

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:

inner join supplier png

Và bảng Order1 như sau:

inner join order png

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:

fromoutput5 png

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.

Trần Trung Dũng

15 chủ đề

2610 bài viết

Cùng chủ đề
0