我有三個表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