I'm trying to COUNT() on multiple tables in one query, but I can't get it to work. Here's what I have so far:
TABLES:
table1
---------------------
id | name
---------------------
1 | test
2 | test2
table2
---------------------
id | table1_id
---------------------
1 | 1
2 | 1
3 | 1
table3
---------------------
id | table2_id
---------------------
1 | 1
table4
---------------------
id | size | table3_id
---------------------
1 | 1024 | 1
1 | 200 | 1
SQL:
SELECT
table1.name,
COUNT(table2.table1_id) AS table2_count,
COUNT(table3.table2_id) AS table3_count,
COUNT(table4.table3_id) AS table4_count,
SUM(table4.size) AS table4_size
FROM
table1
LEFT JOIN table2
ON table1.id = table2.table1_id
LEFT JOIN table3
ON table2.id = table3.table2_id
LEFT JOIN table4
ON table3.id = table4.table3_id
WHERE
table1.id = 1
Results I'm getting from the above query:
name | table2_count | table3_count | table4_count | table4_size
---------------------------------------------------------------
test | 4 | 2 | 2 | 1224
Results that I should be getting:
name | table2_count | table3_count | table4_count | table4_size
---------------------------------------------------------------
test | 3 | 1 | 2 | 1224