2016-09-27 82 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它不會在這裏幫助。