多联接表时计数问题

时间:2019-03-06 00:21:02

标签: mysql join

我在为这些表创建查询时遇到问题:

Table_A

|-----------|----------|--------|------------|
| id_tableA | id_group | a_name | a_category |
|-----------|----------|--------|------------|
| 1         | 1        | name1  | category1  |
|-----------|----------|--------|------------|
| 2         | 1        | name2  | category2  |
|-----------|----------|--------|------------|
| 3         | 2        | name3  | category3  |
|-----------|----------|--------|------------|
| 4         | 2        | name3  | category3  |
|-----------|----------|--------|------------|

Table_B

|-----------|-----------|--------|------------|
| id_tableB | id_tableA | b_name | b_category |
|-----------|-----------|--------|------------|
| 1         | 1         | name1  | category1  |
|-----------|-----------|--------|------------|
| 2         | 2         | name2  | category2  |
|-----------|-----------|--------|------------|
| 3         | 2         | name3  | category3  |
|-----------|-----------|--------|------------|
| 4         | 1         | name4  | category4  |
|-----------|-----------|--------|------------|
| 5         | 1         | name5  | category5  |
|-----------|-----------|--------|------------|

Table_C

|-----------|-----------|--------|------------|
| id_tableC | id_tableB | c_name | c_category |
|-----------|-----------|--------|------------|
| 1         | 1         | name1  | category1  |
|-----------|-----------|--------|------------|
| 2         | 2         | name2  | category2  |
|-----------|-----------|--------|------------|
| 3         | 2         | name3  | category2  |
|-----------|-----------|--------|------------|
| 4         | 1         | name4  | category2  |
|-----------|-----------|--------|------------|
| 5         | 2         | name3  | category2  |
|-----------|-----------|--------|------------|
| 6         | 4         | name4  | category2  |
|-----------|-----------|--------|------------|

我的查询:

SELECT a.id_tableA, a.id_group, a.a_name, a.a_category, COUNT(b.id_tableB) AS count_idsB, 
COUNT(c.id_tableC) AS count_idsC FROM Table_A AS a 
INNER JOIN Table_B AS b ON b.id_tableA = a.id_tableA 
LEFT JOIN Table_C AS c ON c.id_tableB = c.id_tableB 
WHERE a.id_group = 1 GROUP BY a.id_tableA

预期结果:

|-----------|----------|--------|------------|------------|------------|
| id_tableA | id_group | a_name | a_category | count_idsB | count_idsC |
|-----------|----------|--------|------------|------------|------------|
| 1         | 1        | name1  | category1  | 3          | 3          |
|-----------|----------|--------|------------|------------|------------|
| 2         | 2        | name2  | category2  | 2          | 3          |
|-----------|----------|--------|------------|------------|------------|

不幸的是,但是我的查询显示错误的计数值。在给定的行中为列count_idsBcount_idsC显示相同的值。

谢谢您的帮助。

0 个答案:

没有答案