0

私は SQL を初めて使用し、一度に複数のテーブルを使用する方法を理解するのに苦労しています。

次のようなテーブルがあります。

Table1
| ID | Type |
| 1  | A    |
| 2  | B    |
| 3  | C    |
| 4  | D    |

そして、このようなもの:

Table2
| ID | Qty |
| 1  | 20  |
| 3  | 40  |
| 3  | 10  |
| 2  | 30  |
| 4  | 20  |
| 1  | 10  |

各IDの合計数量を種類別に並べ替えて表示したい。次のようにして、ID で並べ替えることができます。

SELECT ID, SUM(Qty) FROM Table2 GROUP BY ID;

これは問題なく動作します。必要なものが得られます。

| ID | Qty |
| 1  | 30  |
| 2  | 30  |
| 3  | 50  |
| 4  | 20  |

だから今、タイプ別にグループ化しようとしていますが、うまくいきません。私がやっている:

SELECT Type, SUM(Qty) FROM Table1, Table2 GROUP BY Type;

私の出力は次のようになります。

| Type | Qty |
| A    | 130 |
| B    | 130 |
| C    | 130 |
| D    | 130 |

明らかに、列全体を合計し、各タイプの結果を表示しているだけです。誰かがこれを正しく行う方法を説明できますか?

4

3 に答える 3

0

これを試してください:

SELECT t1.type, SUM(t2.qty) qty FROM table1 t1
JOIN table2 t2 ON t1.id = t2.id
GROUP BY t1.type

テーブル間の内部結合が必要です。を使用FROM Table1, Table2すると、実際には table1 のすべての値と table2 のすべての値が一致します。だからこそ、あなたはそれらの数字を得るのです。

于 2013-10-16T04:38:20.853 に答える