Sử dụng hai TRÁI THAM GIA hoặc sử dụng VÀ với THAM GIA TRÁI PHIẾU?


7

Sử dụng hai LEFT JOINs tức là

SELECT <some columns>
FROM Table1 AS t1
LEFT JOIN Table2 AS t2 ON <condition1>
LEFT JOIN Table2 AS t3 ON <condition2>

điều này có giống như sử dụng ANDtrong đơn LEFT JOINkhông? I E

SELECT <some columns>
FROM Table1 AS t1
LEFT JOIN Table2 AS t2 ON <condition1>
AND <condition2>

Cả hai đều giống nhau hay khác nhau (nói chung)?


Nó phụ thuộc vào yêu cầu của bạn và điều kiện ON. Nếu bạn đặt t1.col1 = t2.col1 với Table2 và t1.col1.t3.col1 Nó sẽ giống nhau.

2
Các truy vấn thứ hai sẽ được gần gũi hơn với người đầu tiên về kết quả nếu nó được sử dụng thay vì HOẶC AND, nhưng nó vẫn sẽ là một truy vấn khác nhau nói chung .
Andriy M

Hãy thử sử dụng kế hoạch Giải thích để thấy sự khác biệt :)
Arnab Datta

@RajeshRanjan không họ sẽ không tương đương, ngay cả trong trường hợp đó.
ypercubeᵀᴹ

Câu trả lời:


13

Họ khác nhau. Trong tùy chọn đầu tiên, bạn nhận được 2 lần Table2vào truy vấn của mình. Một lần t2và một lần như t3. Cả hai đều có một nội dung khác nhau và bạn phải đặt chúng trở lại với nhau. Đối với tôi đây là một OR thay vì AND . Trong tùy chọn thứ hai, bạn chỉ nhận được các Table2hàng đáp ứng cả hai tiêu chí.

Giả sử bạn có Table2nội dung sau:

| Color | Size |
|-------|------|
| Red   |  S   |
| Blue  |  S   |
| Blue  |  XS  |

Giả sử bạn muốn có các hàng là BlueS. Trong tùy chọn đầu tiên của bạn, bạn nhận được tất cả các hàng ( t2ví dụ với tất cả Bluet3với tất cả S) và trong tùy chọn thứ hai, bạn chỉ nhận được hàng 2.


4
Không chỉ vậy, vì đây là về việc tham gia bên ngoài bảng hai lần, bạn cũng sẽ nhận được một sản phẩm Cartesian nhỏ với truy vấn đầu tiên. Ý tôi là, một Table1hàng muốn có màu xanh lam và kích thước S. Vì vậy, liên kết đầu tiên cung cấp cho nó hai Table2kết quả trùng khớp, do đó nhân đôi Table1hàng và tham gia thứ hai cung cấp hai kết quả khớp cho mỗi bản sao, do đó tổng cộng có bốn hàng.
Andriy M
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.