2016-09-27 101 views
0

首先,对不起那个奇怪的标题返回的参数的功能。这里是东西: 我的网店,主要销售产品在亚马逊工作。由于我们销售多套不同的商品,因此我们发送了多套商品中的同一商品到amazon fba。为了给出一个项目的总和在所有集合,我写了下面的查询:SQL SUM()与查询的每一行

SELECT 
    SUM(nQuantity) 
    AS [total] 
FROM [amazon_fba] 
INNER JOIN (SELECT 
    [cArtNr] 
FROM [tArtikel] 
INNER JOIN (SELECT 
    [kStueckliste] 
FROM [tStueckliste] 
WHERE [kArtikel] = (SELECT 
    [kArtikel] 
FROM [tArtikel] 
WHERE [cHAN] = 12345)) [bar] 
    ON [tArtikel].[kStueckliste] = [bar].[kStueckliste]) [foo] 
    ON [amazon_fba].[cSellerSKU] = [foo].[cArtNr] 

cHAN=12345部分只是用来选择一个特定项目的,我们想知道的项目总数。这个查询本身工作正常,所以这不是问题。

不过,我也知道这是套部分所有产品都有[tArtikel].[kStueckliste]=0,这-in理论 - 让他们识别很容易。这让我的想法,我可以使用此查询,即时生成的所有这些产品的列表,包括各自的总,如:

kArtikel | total 
================= 
| 23 
    56789 | 42 

所以基本上我需要的东西像

foreach (
    select [kArtikel] 
    from [tArtikel] 
    where [tArtikel].[kStueckliste]=0 
) do (
    < the query I made > 
) 

因此我尝试了以下声明:

SELECT 
    SUM(nQuantity) 
    AS [total] 
FROM [amazon_fba] 
INNER JOIN (SELECT 
    [cArtNr] 
FROM [tArtikel] 
INNER JOIN (SELECT 
    [kStueckliste] 
FROM [tStueckliste] 
INNER JOIN (SELECT 
    [kArtikel] 
FROM [tArtikel] 
WHERE [tArtikel].[tStueckliste] = 0) [baz] 
    ON [tStueckliste].[kArtikel] = [baz].[kArtikel]) [bar] 
    ON [tArtikel].[kStueckliste] = [bar].[kStueckliste]) [foo] 
    ON [amazon_fba].[cSellerSKU] = [foo].[cArtNr] 

这并没有 - 作为我hoped-回款项的清单,而是给了我我想创造的所有款项的总和。 由于我是很新的SQL(约两周的可能),我既没有任何知道该怎么办,也不在我的错误是,我也应该用什么措辞围绕谷歌我的方式-thus这个帖子的那奇怪的标题。所以,如果有人可以帮助我与和/或点我到正确的方向,我会很开心:)

回答

2

我写的MySQL而不是SQL,但我相信它比一些功能和语法非常相似的其他。这是我觉得应该为你工作:

select am.cArtNr, sum(am.nQuantity) as total 
from amazon_fba am 
join tArtikel ar on ar.cArtNr=am.cArtNr 
join tStueckliste st on st.kStueckliste=ar.kStueckliste 
where ar.kStueckliste=0 
group by am.cArtNr; 

加入该集团将做的文章拆分出来,但减少括号的数量(在这种情况下派生表)将加快查询提供你使用索引。再次,这是我会怎么做在MySQL和唯一的其他查询语言我有经验的BigQuery它不会在这里帮助。