PDA

View Full Version : Làm sao để join nhiều bảng



gautrucpanda
13-11-2004, 08:42
Xin các bạn chỉ giúp. Tôi muốn left outer join 3 table trở lên thì làm thế nào?

itkit
07-12-2004, 13:14
Thì cứ dùng lệnh join bình thường thôi.
Vd có 3 bảng A, B, C
câu sql:
select *
from a left join b on a.pr_key = b.fr_key left join c on b.pr_key = c.fr_key

cứ típ tục vậy cho các bảng kế típ thui

lam_lvl
07-12-2004, 20:18
Có nhiều trường hợp mà áp dụng, khi join nhiều bảng (chẳng hạn 3,4,5 bảng), có thể tùy thuộc vào mối quan hệ giữa các bảng mà ta dùng chỉ LEFT JOIN, hoặc LEFT JOIN và RIGHT JOIN, hoặc LEFT JOIN và INNER JOIN, mỗi kiểu JOIN sẽ cho một kết quả khác nhau còn tùy thuộc vào mục đích của mình và mối quan hệ các bảng trong database mà ta chọn phương pháp truy vấn dữ liệu cho phù hợp để đạt kết quả mong muốn và tăng hiệu suất thực thi.

phatnq2003
08-12-2004, 13:15
Có 4 loại quan hệ giữa các bảng: INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN và FULL JOIN.
Tùy theo cách mà bạn muốn nhận kết quả từ các bảng có quan hệ với nhau để bạn chọn loại quan hệ cho đúng.

itkit
13-12-2004, 17:00
Chùi ui, người ta chỉ hỏi left join thui mà mấy ông phô kiến thức của mình ra chi dzị??

phatnq2003
14-12-2004, 12:11
Chùi ui, người ta chỉ hỏi left join thui mà mấy ông phô kiến thức của mình ra chi dzị??
Trước tiên cần phải biết bản chất của các join thì mới bảo đảm việc lấy chính xác dữ liệu mình cần thông qua join.

Theo bạn itkit thì khi 2 bảng dùng left outer join để liên kết, dữ liệu trả về sẽ như thế nào nếu lấy bên này một ít field, bên kia một ít field?

Tôi không muốn phô kiến thức của mình bởi vì kiến thức là vô hạn, không ai có thể dám chắc là mình tài giỏi. Chỉ là biết gì thì trao đổi với nhau một tí. Mong bạn itkit đừng vội nổi nóng.
:drool:

jiSh@n
16-12-2004, 09:38
Hình như còn loại join tương quan nữa

phatnq2003
16-12-2004, 12:46
Hình như còn loại join tương quan nữa

Theo tôi được biết thì trong SQL Server còn có một khái niệm join nữa, đó là CROSS JOIN. Đây là một loại liên kết dữ liệu giữa 2 bảng khá hay. VD: bạn có 2 table:
Table1 (chứa danh sách học viên, tôi chỉ lấy 1 field MAHV để làm ví dụ, có 3 record)
MAHV
-----
A
B
C
Table2 (chứa danh sách lớp năng khiếu mà học viên có theo tham dự, có 5 record)
MALOP
-----
L1
L2
L3
L4
L5

Khi bạn cho CROSS JOIN 2 table lại:
SELECT mahv, malop FROM table1 CROSS JOIN table2

Bạn sẽ có một dữ liệu như sau:
MAHV MALOP
-------------
A L1
A L2
A L3
A L4
A L5
B L1
B L2
B L3
B L4
B L5
C L1
C L2
C L3
C L4
C L5
:)

itkit
07-03-2005, 16:11
Chùi, vậy mà còn bảo là không phô, híc... :(
người ta đã hỏi left join tức là người ta đã biết left join là cái gì gòi. người ta chỉ không bít xài làm seo thôi :(

dunglq8
13-04-2005, 07:47
mình đồng ý với bạn phatnq2003, nói rõ để những ai chưa biết thì biết thêm, chứ có sao đâu, ai biết rồi thì đừng đọc, để thời gian làm việc khác