2010-09-21 47 views
28

Tôi làm cách nào để chọn COUNT (*) từ nhiều bảng trong MySQL?COUNT (*) từ nhiều bảng trong MySQL

Chẳng hạn như:

SELECT COUNT(*) AS table1Count FROM table1 WHERE someCondition 
JOIN?? 
SELECT COUNT(*) AS table2Count FROM table2 WHERE someCondition 
CROSS JOIN? subqueries? 
SELECT COUNT(*) AS table3Count FROM table3 WHERE someCondition 

Edit:

Mục đích là để trở lại này:

+-------------+-------------+-------------+ 
| table1Count | table2Count | table3Count | 
+-------------+-------------+-------------+ 
| 14   | 27   | 0   | 
+-------------+-------------+-------------+ 
+0

gì bạn mục tiêu? – Scott

+0

Cần thêm chi tiết cụ thể - bạn có thể mô tả bằng lời bạn đang cố gắng làm gì không? – egrunin

+0

thử thay đổi kết nối bên trong sang bên trái tham gia –

Trả lời

65

Bạn có thể làm điều đó bằng cách sử dụng truy vấn con, một subquery cho mỗi tableCount:

SELECT 
    (SELECT COUNT(*) FROM table1 WHERE someCondition) as table1Count, 
    (SELECT COUNT(*) FROM table2 WHERE someCondition) as table2Count, 
    (SELECT COUNT(*) FROM table3 WHERE someCondition) as table3Count 
+0

Tôi muốn đếm 3 (đếm) hàng từ hàng đầu tiên và chỉ đếm một hàng đếm từ thứ 2. Làm thế nào tôi có thể làm điều đó? – Adrian

+1

Tôi đến đây để tìm hiểu cách làm tương tự trong cơ sở dữ liệu Firebird. Cú pháp hơi khác: SELECT * FROM (SELECT COUNT (*) AS table1Từ FROM table1), (SELECT COUNT (*) AS table2Count FROM table2), (SELECT COUNT (*) AS table3Count FROM table3) –

2

Bạn có thể sử dụng UNION

SELECT COUNT(*) FROM table1 WHERE someCondition 
    UNION 
    SELECT COUNT(*) FROM table2 WHERE someCondition 
    UNION 
    SELECT COUNT(*) FROM table3 WHERE someCondition 
+3

Liên minh sẽ cung cấp kết quả theo các hàng riêng lẻ thay vì cột. Kết quả mà OP đang tìm kiếm là một hàng có 3 cột đếm –

10

Bạn có thể làm điều này với các truy vấn con, ví dụ:

select (SELECT COUNT(*) FROM table1 WHERE someCondition) as table1Count, 
     (SELECT COUNT(*) FROM table2 WHERE someCondition) as table2Count 
3

Hãy thử thay đổi để:

SELECT 
    COUNT(table1.*) as t1, 
    COUNT(table2.*) as t2, 
    COUNT(table3.*) as t3 
FROM table1 
    LEFT JOIN tabel2 ON condition 
    LEFT JOIN tabel3 ON condition 
+0

sẽ không làm việc như không có mối quan hệ giữa các bảng –

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