Helpex - Trao đổi & giúp đỡ Đăng nhập
16

Thay vì sử dụng các từ khóa như FULL OUTER JOIN hoặc FULL JOIN, làm cách nào để thực hiện phép nối bên ngoài đầy đủ bằng cách sử dụng mệnh đề 'where' với sự trợ giúp của toán tử '+' ?!

16 hữu ích 3 bình luận 60k xem chia sẻ
22

Bạn không thể (ít nhất là trực tiếp). Oracle chỉ hỗ trợ một kết nối bên ngoài đầy đủ bằng cách sử dụng cú pháp SQL: 1999.

Bạn có thể giả mạo nó bằng cách hợp nhất hai phép nối bên ngoài:

select a.field1, b.field2
from table_a a, table_b b
where a.id = b.id(+)
union all 
select a.field1, b.field2
from table_a a, table b b
where a.id(+) = b.id
      and a.id is null

Nó dễ đọc hơn rất nhiều bằng cách sử dụng cú pháp SQL: 1999:

select a.field1, b.field2
from table_a a full outer join table_b b
on a.id = b.id
22 hữu ích 0 bình luận chia sẻ
3

Đây là một ví dụ bạn có thể chạy trong oracle để xem kết quả cho chính mình.

with 
a as 
   (select 'A' tbl, level id from dual connect by level < 1000),
b as 
   (select 'B' tbl, level + 500 id from dual connect by level < 1000)
select a.tbl, a.id, b.tbl, b.id from a, b where a.id = b.id(+)
union all
select a.tbl, a.id, b.tbl, b.id from a, b where a.id(+) = b.id and a.id is null

Giống như:

with 
a as 
   (select 'A' tbl, level id from dual connect by level < 1000),
b as 
   (select 'B' tbl, level + 500 id from dual connect by level < 1000)
select a.tbl, a.id, b.tbl, b.id from a full outer join b on a.id = b.id
3 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ sql oracle , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading