sql sum命令,如果有许多表相关

时间:2013-08-06 18:18:29

标签: sql

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

在表T2中,对应每个P1值可能存在许多L1值,并且对于每个L1值,在表T3中可能存在许多W1值。想象在表T3中有一个名为X的列,I需要x的值之和作为表T3中相应的L1值。

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

  

想象一下,表T3中有一个名为X的列,我需要总和   表T3中相应L1值的x值。

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

SELECT SUM(X) FROM T3
WHERE L1 IN (SELECT W1 FROM T2)