2016-09-27 6 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を持っていることも知っています。だから、基本的に私はこのように

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

のようなものを必要な

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

:私はのように、瞬時に、それぞれの合計で、これらすべての製品のリストを生成するには、このクエリを使用することができることを、考えに私を得たどの私は、次のステートメントを試してみました:

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- -as、代わりに私が作成したいすべての和の合計を与えませんでした。 私はSQLにかなり新しい(多分約2週間)ので、何をやるべきかわからないし、私の間違いはどこにあるのか、私の周りにgoogleのためにどのようなフレーズを使うべきなのか - このwierdのタイトル。だから、誰かが私を助けてくれるなら、正しい方向に向けることができれば、本当にうれしいだろう。

答えて

2

私はSQLではなくMySQLを書くが、いくつかの機能や構文以外は非常に似ていると思う。ここで私はあなたのために働くべきだと思うものです:(テーブルを派生この例では)の記事で、分割を行いますして、グループを追加しますが、括弧の数を減らす

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です。ここでは役に立ちません。

関連する問題