2010-11-05 38 views

Trả lời

22

Bảng bên trái là bảng đầu tiên trong lựa chọn. Có, hai ví dụ của bạn là tương đương.

3

Xem này cho một hướng khá tốt về gia nhập: http://en.wikipedia.org/wiki/Join_(SQL)

Và vâng, cả hai câu lệnh là :-) tương đương

+0

Đó URL hiện trỏ tới example.com ... –

+1

@djacobson: Cảm ơn, sửa chữa. Không có gì để smiple nó không thể được hơi say lên! –

+2

Smiple, eh? * Trên thực tế * :) –

1

Vâng, nó xác định bởi các bên của các nhà điều hành JOIN bảng xuất hiện trên. Hai ví dụ của bạn thực sự là tương đương.

+0

Câu trả lời của bạn dường như mâu thuẫn với chính nó. Bạn nói vị trí tương đối so với các nhà điều hành là những gì sẽ xác định bảng được trái và phải nhưng trong ví dụ của tôi họ đang trao đổi, và bạn biết họ là tương đương. – Jake

+0

đọc cẩn thận, xin vui lòng: Tôi biết vị trí tương đối so với ** THAM GIA ** nhà điều hành, chứ không phải các nhà điều hành bình đẳng. –

6

Bảng bên phải luôn là bảng mà bạn đang tham gia. Vì vậy, có, cả hai báo cáo của bạn là tương đương.

JOIN [Table] ON ... 

[Bảng] luôn là bảng bên phải.

3

Khoảng "trái" là kết quả của tất cả mọi thứ xuất hiện đầu tiên trong toàn bộ mệnh đề FROM khi đọc từ trái sang phải - bao gồm kết quả của các JOIN, truy vấn phụ, VIEW và thủ tục lưu trữ khác. Thứ tự của các bảng trong phần ON của mệnh đề JOIN là không liên quan, do đó, cả hai câu lệnh SQL đều tương đương nhau.

Kết nối thông thường chỉ hiển thị các dòng có mệnh đề ON của JOIN là true, trong khi LEFT JOIN cũng hiển thị các bản ghi từ "left" nếu điều kiện là false (hiển thị NULL cho bất kỳ cột nào từ "right" hiện diện trong SELECT).

Ví dụ:

-- People:   -- Car 
id | name   owner_id | model 
---+------------  ---------+------------ 
1 | Paul   1  | Ferrari 
2 | Nancy   2  | Porsche 
3 | Arthur   NULL  | Lamborghini 
4 | Alfred   10  | Maserati 

> select people.name, car.model from people join car on car.owner_id=people.id; 

name  | model 
---------+-------------- 
Paul  | Ferrari 
Nancy | Porsche 
2 record(s) found 

> select people.name, car.model from people left join car on 
    car.owner_id=people.id; 

name  | model 
---------+-------------- 
Paul  | Ferrari 
Nancy | Porsche 
Arthur | NULL 
Alfred | NULL  
4 record(s) found 

> select people.name, car.model from people left join car on 
    people.id = car.owner_id; 

name  | model 
---------+-------------- 
Paul  | Ferrari 
Nancy | Porsche 
Arthur | NULL 
Alfred | NULL  
4 record(s) found 
+0

Đó không phải là câu hỏi. –

Các vấn đề liên quan