-2

我有三个表 t1、t2、t3。
T1有一个主键p1
T2有一个主键L1和一个外键p1,参考表T1
T3有一个主键W1和一个外键L1,参考表T2。

在表 T2 中,每个 P1 值相应地可能有许多 L1 值,同时对于每个 L1 值,表 T3 中可能有许多 W1 值。想象在表 T3 中有一个名为 X 的列,我需要总和表 T3 中对应 L1 值的 x 值。

                       
    --------- --------- ---------
    | t1 | | t2 | | t3 |
    --------- --------- ---------
    |p1 (PK)| 1 * |L1 (PK)| 1 * |W1 (PK)|
    | | ---- |p1 (FK)| ---- |L1 (FK)|
    | | (p1) | | (L1) |X |
    --------- --------- ---------
4

2 回答 2

1

您的结构并不完全清楚,但其中之一可能会让您继续前进:

SELECT SUM(T3.x)
FROM T1
INNER JOIN T2 on T1.P1 = T2.P1
INNER JOIN T3 ON T2.L1 = T3.L1

或者

SELECT SUM(x)
FROM T3
WHERE L1 IN
(SELECT L1 FROM T2 INNER JOIN T1 ON T2.P1 = T1.P1)
于 2013-08-06T18:42:33.160 回答
0

假设表 T3 中有一个名为 X 的列,我需要表 T3 中对应 L1 值的 x 值的总和。

这得到了 T3 中 X 的总和,其中 FK L1 在 T2 中:

SELECT SUM(X) FROM T3
WHERE L1 IN (SELECT W1 FROM T2)
于 2013-08-06T18:30:00.597 回答