2010-03-27 51 views
5

Hãy nhìn vào hình ảnh nàymysql tham gia 3 bảng và đếm

alt text http://img249.imageshack.us/img249/6453/pic1v.jpg

ở đây được 3 bàn, và ra tôi muốn là

uid từ table1 ngành công nghiệp từ bảng 3 của cùng một uid đếm của fid từ bảng 2 của cùng một uid

như trong ví dụ mẫu đầu ra sẽ là 2 bản ghi

Cảm ơn

+0

Bạn đã làm gì cho đến nay và vấn đề với nỗ lực hiện tại của bạn là gì? – Yacoby

+0

tôi thử nhiều câu lệnh sql nhưng không thể khiến chúng hoạt động. tôi cố gắng tham gia, bên trong jon vv tôi cũng tìm kiếm trên internet nhưng did't nhận được bất kỳ ans. – air

Trả lời

5

Tôi không thấy bất kỳ mối quan hệ với bảng 1. Dưới đây là một ví dụ sử dụng một bên tham gia giữa hai bảng và nhóm bởi uid:

SELECT 
    t3.uid, 
    t3.industry, 
    count(t2.fid) 
FROM 
    table3 t3 
INNER JOIN 
    table2 t2 ON t3.uid = t2.uid 
GROUP BY 
    t3.uid 
+0

tôi đồng ý với câu trả lời này, không cần phải tham gia bảng 1 tại đây. bạn có thể sử dụng t3.uid và t2.uid để tham gia cùng họ và nhận tất cả thông tin bắt buộc. – Faisal

+2

mặc dù nói chung tôi đồng ý với câu trả lời, JOIN bổ sung có thể có tác dụng lọc ra các hàng mà UID không có trong Bảng 1. Ngoài ra, đối với truy vấn được hiển thị là chính xác, nhóm nên chứa 't3.insdustry' – van

4

Hãy thử với điều này:

SELECT table1.uid,table3.industry,COUNT(table2.fid) 
FROM table1 
INNER JOIN table3 ON table1.uid=table3.uid 
INNER JOIN table2 ON table1.uid=table2.uid 
GROUP BY table1.uid, table3.industry 

Bảng 1 tham gia bên trong là vô ích nhưng có thể hữu ích nếu bạn cần truy xuất thành phố hoặc mem_no; trong trường hợp này, hãy nhớ thêm trường cũng trong mệnh đề GROUP BY.

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