私は3つのテーブル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 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
......................
リターンを選択:
t1.id |sum(t3.column)
5 |24
5 |24
5 |24
5 |24
5 |24
t1.id でグループ化すると、同じ t1.id の行が 5 つある理由がわかりません。1行しか返さない場合、合計に関する情報が失われることはわかっていますが、selectで合計なしでもこれを行います。この選択がばかげていて意味がないことはわかっていますが、理解を深めるのに役立つかもしれません。