0

ProdBiscuit As tb および StockData As sd をテーブルにする必要があります。if (sd.status>0 AND sd.prodid = tb.id AND sd.matcuisine = の条件で StockData (quantite) の数量の合計を取得する必要があります。 3)

ここに私のSQLクエリがあります

 SELECT tb.id, tb.nom, tb.proddate, tb.qty, tb.stockrecno 
 FROM ProdBiscuit AS tb
 JOIN 

(SELECT id, prodid, matcuisine, status, SUM(quantite) AS rq FROM StockData) AS sd
 ON (tb.id = sd.prodid AND sd.status > 0 AND sd.matcuisine = 3) LIMIT 25 OFFSET @Myid

これは私に行をまったく与えませんか?

ProdBiscuit には 3 行、Stockdata には 11 行しかなく、StockData には 2 行しかないため、状態は良好です。

そして、図に示されているように、条件を与える行は 2 つしかありません。

2 つのテーブルのイメージ

クエリの何が問題になっていますか?

PS: 画像の緑色の線は、クエリの状態を示しています。

4

2 に答える 2

2

これを確認してください。必要な結果が得られない場合は、SQLFiddle.com にアクセスし、データを含むサンプル テーブルを作成して、必要なものを簡単に把握できるようにします。

SELECT tb.id, tb.nom, tb.proddate, tb.qty, tb.stockrecno, SUM(sd.quanite)
FROM ProdBiscuit AS tb
JOIN StockData AS sd
  ON tb.id = sd.prodid
WHERE sd.status > 0 AND sd.matcuisine = 3
GROUP BY tb.id, tb.nom, tb.proddate, tb.qty, tb.stockrecno
于 2013-11-11T22:23:33.023 に答える
0
SELECT tb.id, tb.nom, tb.proddate, tb.qty, tb.stockrecno, SUM(quantite)  As rq

FROM ProdBiscuit AS tb 

JOIN StockData AS sd  ON (tb.id = sd.prodid AND sd.status > 0 AND sd.matcuisine = 3)
OR (tb.id = sd.prodid AND sd.status = 0 AND sd.matcuisine = 3)  
GROUP BY tb.id, tb.nom, tb.proddate, tb.qty, tb.stockrecno

このクエリは私にこれを与えます

ID  NOM                    QTY      RQ
1   Biscuit Chocolat       100      100
2   Biscuit Moutarde       120      226
3   Biscuit Pain Epice     100      100

そしてハッピーエンド@AgRizzoの助けを借りて、正確な表示のために少し修正して追加しました:

SELECT tb.id, tb.nom, tb.proddate, tb.qty, tb.stockrecno, 

SUM(IF((status>0 AND tb.id=sd.prodid),quantite,0))  As rq FROM ProdBiscuit AS tb 

JOIN StockData AS sd  ON (tb.id = sd.prodid AND sd.status > 0 AND sd.matcuisine = 3)
OR (tb.id = sd.prodid AND sd.status = 0 AND sd.matcuisine = 3)  
GROUP BY tb.id, tb.nom, tb.proddate, tb.qty, tb.stockrecno



ID  NOM                    QTY      RQ
1   Biscuit Chocolat       100      100
2   Biscuit Moutarde       120       14
3   Biscuit Pain Epice     100      100

Code for displaying the "rq" is:

QtyLst.Items.Add((Convert.ToInt16(reader["qty"])- Convert.ToInt16(reader["rq"])).ToString());
于 2013-11-12T00:30:51.627 に答える