0

多対多のテーブル p_to_t があります

+----------+-----------+-----------+
|   p      |    t      |   weight  |
+----------+-----------+-----------+
|   1      |   bob     |    40     |
+----------+-----------+-----------+
|   2      |   sue     |    24     |
+----------+-----------+-----------+
|   3      |   bob     |    90     |
+----------+-----------+-----------+
|   4      |   joe     |    55     |
+----------+-----------+-----------+
|   5      |   bob     |    33     |
+----------+-----------+-----------+

t の各値の重みを合計しながら、値 t WHERE p IN(1,2,4,5) を照会しようとしています。

このクエリ:"SELECT t, SUM(weight) AS sWeight FROM p_to_t WHERE p IN(1,2,4,5)";選択した最初の "t" にすべての合計を追加するだけです。

+-----------+-----------+
|    t      |   weight  |
+-----------+-----------+
|   bob     |   152     |
+-----------+-----------+

私が欲しいのは:

+-----------+-----------+
|    t      |   weight  |
+-----------+-----------+
|   bob     |   97      |
+-----------+-----------+
|   joe     |   55      |
+-----------+-----------+

考え?

4

3 に答える 3

5

GROUP BYt に句を追加するだけです

SELECT 
 t, 
 SUM(weight) AS sWeight 
FROM p_to_t 
WHERE p IN(1,2,4,5)
GROUP BY t

ちなみに、IN句でこれらの値を使用してSueも取得します...

そして、より頻繁にそうであるように、ボブ97のためではありません40 + 3373

于 2013-09-04T17:24:01.423 に答える
1
SELECT t, SUM(weight) AS sWeight FROM p_to_t WHERE p IN(1,2,4,5) GROUP BY t

フィドル

于 2013-09-04T17:24:10.067 に答える