我有三个表t1,t2,t3。 T3与t2和t2与t1有关。 我有这个选择Mysql加入三个表比组加两列
select t1.id,sum(t3.column)
from
t1
join t2 on t2.fk = t1.id
join t3 on t3.fk = t2.id
where t1.column = 'something'
group by t1.id,t3.fk;
选择无组有120行。用
group by t3.fk
它有5行。 With
group by t1.id it have 1 row
这仍然没问题。但如果我有
group by t3.fk,t1.id
它有5行。我预计只有1排。 实施例的数据:
t1.id |t1.some_column
5 |"some data"
t2.id |t2.fk |t2.some_column
1 |5 |"a"
2 |5 |"b"
3 |5 |"c"
4 |5 |"d"
5 |5 |"e"
t3.id |t3.fk |t3.column
1 |1 |1
......................
24 |2 |1
......................
48 |3 |1
......................
72 |3 |1
......................
96 |3 |1
......................
select返回:
t1.id |sum(t3.column)
5 |24
5 |24
5 |24
5 |24
5 |24
我无法理解为什么会出现5列相同t1.id当我通过t1.id基。我知道,如果它只返回一行,我就失去了关于总和的信息,但是它也没有选择总和。我知道这个选择是愚蠢的,没有任何意义,但它可以帮助我更好地理解。
考虑提供一个sqlfiddle以及相应的和期望的结果。为了这个例子的目的,我确信20行就足够了。 – Strawberry