组合两个sql脚本

组合两个sql脚本,sql,ms-access,Sql,Ms Access,我从两张表中进行选择: SELECT SUM(S2.F64) as sumAll FROM someTABLE1 S1 LEFT OUTER JOIN someTABLE2 S2 ON S2.F32 = S1.F32 WHERE S2.F01 = '1006' and S2.F68='ORDER' AND S1.F67='ITEM' 现在我想从另一个select中获取S1.F01的值:类似这样的值 SELECT S3.F01 FROM someTABLE3 S3 WHERE

我从两张表中进行选择:

 SELECT  SUM(S2.F64)   as sumAll
 FROM someTABLE1 S1
 LEFT OUTER JOIN someTABLE2 S2 ON S2.F32 = S1.F32 
 WHERE S2.F01 = '1006'
 and S2.F68='ORDER' AND S1.F67='ITEM'
现在我想从另一个select中获取S1.F01的值:类似这样的值

SELECT S3.F01
FROM someTABLE3 S3
WHERE "something..."
所以我想要这样的东西:

SELECT  SUM(S1.F64) as sumAll, S3.F01  
FROM someTABLE3 S3
LEFT OUTER JOIN someTABLE1 S1 ON S1.F01 = S3.F01
LEFT OUTER JOIN someTABLE2 AS S2 ON S1.F32 = S2.F32 
WHERE S1.F01 = S3_F01
and S2.F1068='ORDER' AND S1.F1067='ITEM'
但是,我希望得到S3中的所有项,并只填充sumAll中条件匹配的列

所以我想要这样的东西(伪代码):


还有其他方法吗?

您只是在寻找
分组依据吗

SELECT  SUM(S1.F64) as sumAll, S3.F01  
FROM someTABLE3 S3
    LEFT OUTER JOIN someTABLE1 S1 ON S1.F01 = S3.F01
    LEFT OUTER JOIN someTABLE2 AS S2 ON S1.F32 = S2.F32 
WHERE S2.F1068='ORDER' AND S1.F1067='ITEM'
GROUP BY S3.F01
编辑-将where条件移动到连接

SELECT  SUM(S1.F64) as sumAll, S3.F01  
FROM someTABLE3 S3
    LEFT OUTER JOIN someTABLE1 S1 ON S1.F01 = S3.F01 AND S1.F1067='ITEM'
    LEFT OUTER JOIN someTABLE2 AS S2 ON S1.F32 = S2.F32 AND S2.F1068='ORDER'
GROUP BY S3.F01

您只是在寻找
分组依据吗

SELECT  SUM(S1.F64) as sumAll, S3.F01  
FROM someTABLE3 S3
    LEFT OUTER JOIN someTABLE1 S1 ON S1.F01 = S3.F01
    LEFT OUTER JOIN someTABLE2 AS S2 ON S1.F32 = S2.F32 
WHERE S2.F1068='ORDER' AND S1.F1067='ITEM'
GROUP BY S3.F01
编辑-将where条件移动到连接

SELECT  SUM(S1.F64) as sumAll, S3.F01  
FROM someTABLE3 S3
    LEFT OUTER JOIN someTABLE1 S1 ON S1.F01 = S3.F01 AND S1.F1067='ITEM'
    LEFT OUTER JOIN someTABLE2 AS S2 ON S1.F32 = S2.F32 AND S2.F1068='ORDER'
GROUP BY S3.F01

我不能绝对肯定我是否完全理解你,但这里有一种方法可以做到这一点:

SELECT  S3.*, SQ.sumValue
FROM someTABLE3 S3
LEFT JOIN( SELECT F01,SUM(F64)
          FROM someTable1
          WHERE F1067='ITEM'
          GROUP BY F01) SQ ON SQ.F01 = S3.F01
LEFT JOIN someTable1 AS S1 ON S1.F01 = S3.F01
LEFT JOIN someTABLE2 AS S2 ON S1.F32 = S2.F32  AND S2.F1068='ORDER'
table1
上执行一个内部查询,通过F01
获得
SUM(F64)组。这样,当您从
table3
执行
左联接时,您将得到所有
table3
和K或所需的
SUM

然后对于
表2
的左连接,我首先与
表1
进行
左连接,因为我不知道是否可以将
表2
表3
关联起来


这有点让人困惑,但我希望你能理解这个方法,我不确定我是否完全理解你,但这里有一个方法可以做到这一点:

SELECT  S3.*, SQ.sumValue
FROM someTABLE3 S3
LEFT JOIN( SELECT F01,SUM(F64)
          FROM someTable1
          WHERE F1067='ITEM'
          GROUP BY F01) SQ ON SQ.F01 = S3.F01
LEFT JOIN someTable1 AS S1 ON S1.F01 = S3.F01
LEFT JOIN someTABLE2 AS S2 ON S1.F32 = S2.F32  AND S2.F1068='ORDER'
table1
上执行一个内部查询,通过F01
获得
SUM(F64)组。这样,当您从
table3
执行
左联接时,您将得到所有
table3
和K或所需的
SUM

然后对于
表2
的左连接,我首先与
表1
进行
左连接,因为我不知道是否可以将
表2
表3
关联起来


这有点令人困惑,但我希望您理解这种方法

我不能很好地理解您的需求,但是当您有一个聚合函数(如SUM)并且需要其他列时,您必须按另一列进行分组。但我不明白这是否是你想要的。也许添加表schemma、一些示例数据和预期结果可以帮助我们帮助您。看看它是否适合你的需要。否则,可能会添加结构和一些示例数据,以便于帮助您。我不能很好地理解您的需求,但当您有一个聚合函数(如SUM)并且需要其他列时,您必须按另一列进行分组。但我不明白这是否是你想要的。也许添加表schemma、一些示例数据和预期结果可以帮助我们帮助您。看看它是否适合你的需要。否则,可能会添加结构和一些示例数据,以使其更容易帮助您。不,不是真的,所以我想从S3中选择所有内容(无论条件S1.F1067='ITEM'是否匹配)然后只有S1.F1067='ITEM'表中的总和,其中S1.F1067='ITEM'不,它再次只给出了S1.F1067='ITEM'不正确的行,所以我想要的是从S3中选择所有内容(无论条件S1.F1067='ITEM'是否匹配)然后只有S1.F1067='ITEM'中的表S1的总和,它再次只给出S1.F1067='ITEM'中的行