Mysql连接三个表,而不是按两列分组

Mysql连接三个表,而不是按两列分组,mysql,join,group-by,Mysql,Join,Group By,我有三张桌子t1,t2,t3。T3与t2有关,t2与t1有关。 我有这个选择 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行。 与 这还可以。但如果我有 gro

我有三张桌子t1,t2,t3。T3与t2有关,t2与t1有关。 我有这个选择

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行。 与

这还可以。但如果我有

group by t3.fk,t1.id
它有5行。我以为只有一排。 示例数据:

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
......................
选择返回:

t1.id    |sum(t3.column)
5        |24
5        |24
5        |24
5        |24
5        |24

我不明白当我按t1.id分组时,为什么有5行具有相同的t1.id。我知道,如果它只返回一行,我将丢失有关sum的信息,但它也会在select中不返回sum。我知道这个选择很愚蠢,毫无意义,但它可能会帮助我更好地理解。

我相信你没有向我们提供足够的信息,因为结果毫无意义

  • group by t2.fk
    返回5行表示有五个不同的
    t2.fk
  • group by t1.id
    返回1行表示只有一个不同的
    t1.id
  • 由于您加入了on
    t2.fk=t1.id
    ,这意味着
    t2.fk
    的不同值的数量和
    t1.id
    的不同值的数量应该是相同的,这与您之前的结果相矛盾


对不起,你说得对。它应该是t3.fk而不是t2.fk。我编辑它 并添加一些数据科库米斯


没有什么难懂的。假设有5个
t3.fk
的唯一值,比如[1,2,3,4,5],还有1个
t1.id
的唯一值,比如[1],组合
t3.fk,t1.id
应该产生5个唯一的组合,比如[(1,1),(2,1),(3,1),(4,1),(5,1)]。因此,返回5行是意料之中的事。

很抱歉,您是对的。它应该是t3.fk而不是t2.fk。我编辑它并添加一些数据。没有什么难懂的。假设有5个
t3.fk
的唯一值,比如[1,2,3,4,5],还有1个
t1.id
的唯一值,比如[1],组合
t3.fk,t1.id
应该产生5个唯一的组合,比如[(1,1),(2,1),(3,1),(4,1),(5,1)]。因此,返回5行是意料之中的事。考虑提供一个SqLoFIDLE连同一个相应的和期望的结果。就本例而言,我相信20行就足够了。
t1.id    |sum(t3.column)
5        |24
5        |24
5        |24
5        |24
5        |24