Chọn Nhiều Bảng Tại Lệnh From Trong Oracle - Freetuts
Có thể bạn quan tâm
Ở 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.
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. 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:
Bài viết này được đăng tại [free tuts .net]
| 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.
Từ khóa » Join Nhiều Bảng Trong Oracle
-
Hiển Thị Dữ Liệu Từ Nhiều Table Bằng Cách Sử Dụng Join - TungDT
-
Inner Join Trong Oracle - Freetuts
-
Truy Vấn Nhiều Bảng Với JOIN Trong SQL
-
Sử Dụng (+) để Outer Join Bảng Trong Oracle SQL | Dũng Vũ Blog
-
Các Loại JOIN Trong Oracle - Vi
-
SQL Cơ Bản - Bài 5: JOIN
-
Chọn Nhiều Bảng Tại Lệnh From Trong Oracle
-
Hướng Dẫn Học SQL Cho Người Mới Bắt đầu Với Oracle
-
Câu Lệnh SQL Join: Các Loại Join Trong SQL - Viblo
-
Sử Dụng Gợi ý Trong Oracle - Viblo
-
Mệnh đề JOIN Trong SQL - Học Sql Cơ Bản đến Nâng Cao - VietTuts
-
Truy Vấn Dữ Liệu Từ Nhiều Bảng Trong Sql? - Tạo Website
-
DELETE - Lệnh Xóa Dữ Liệu - SQL & Database