2011-07-03 8 views
1

私はいくつかのテーブルを結合するクエリに取り組んでいます。ここにコードがあります。 3番目の行のSUM(SaleItems_T.qtymajor)ASの売上を追加するまで、クエリは正常に機能します。 'フィールドリスト'に 'SaleItems_T.qtymajor'という不明な列があります 再注文用ワークシートを作成しようとしています。mysqlクエリが機能しない

SELECT ProductMaster_T.ProductName_VC AS PGroup, 
StockMain_T.ItemDescription AS Item, 
SUM(SaleItems_T.qtymajor) AS sales, 
stockbuffers_T.buffer_qty AS BufferQty, 
(stkbalance_T.AJ1+stkbalance_T.AR2+stkbalance_T.AD3+stkbalance_T.DX4) AS Stock, 
(stkbalance_T.AJ1+stkbalance_T.AR2+stkbalance_T.AD3+stkbalance_T.DX4)-stockbuffers_T.buffer_qty AS Result 
FROM ProductMaster_T, StockMain_T, stockbuffers_T, stkbalance_T 
WHERE StockMain_T.ItemCode = stockbuffers_T.itemcode 
AND 
StockMain_T.ItemCode = stkbalance_T.itemid 
AND 
ProductMaster_T.ProductID = StockMain_T.ProdID 
AND 
SaleItems_T.ItemID = StockMain_T.ItemCode 
ORDER BY 
ProductName_VC,ItemDescription ASC 
+0

です。ありがとう、私はそれを追加しました – mmdel

答えて

3

クエリで、FROM句またはJOINのどちらかでSaleItems_Tテーブルを参照していません。

+0

販売された各項目の1つの行が追加されます。クエリは機能していますが、ただ1つの行結果を与えるだけです。私は合計3500のアイテムを持っていて、もしあれば各アイテムに対して合計の売上を表示したい。 – mmdel

+2

@ mmdel:すべての項目に対してSUMを使用する場合は、 'GROUP BY StockMain_T.ItemCode'を追加します。または、商品を一意に決定する「GROUP BY ProductMaster_T.ProductID'」。 –

+0

@ypercubeありがとうございました。クエリは正常に動作します。 – mmdel

1

クエリが間違っている場所です:

FROM ProductMaster_T, StockMain_T, stockbuffers_T, stkbalance_T 

変更することがあること:コメント欄には、このようなFOT適切ではないよう

FROM ProductMaster_T, StockMain_T, stockbuffers_T, stkbalance_T, SaleItems_T 
0

(これには投票私はそれをここに入れないでください。

暗黙的なJOIN経由のWHERE条件の代わりに、明示的にJOIN ... ON join_conditionという構文を使用する必要があります(これは本当に古い方法です)。条件(またはテーブル)を忘れてエラーが発生しにくいので、これは優れています。また、さまざまなクエリで使用されている可能性がある他の条件との結合条件(ほぼすべてのクエリで使用する)を分離します。

ので、代わりに

FROM ProductMaster_T, StockMain_T 
WHERE ProductMaster_T.ProductID = StockMain_T.ProdID 

書き込み:

FROM ProductMaster_T 
    JOIN StockMain_T 
    ON ProductMaster_T.ProductID = StockMain_T.ProdID 

それは(キーワードAS)(オプションで)エイリアスを使用することもうれしいです。これは、コードをより読みやすくする:

FROM ProductMaster_T AS p 
    JOIN StockMain_T AS m 
    ON p.ProductID = m.ProdID 

全体のクエリのように書くことができます。 INV、アイテム、qtymajor、UOM、価格は次のようにsaleItems_Tのテーブル構造@awerti

SELECT 
    master.ProductName_VC AS PGroup, 
    main.ItemDescription AS Item, 
    SUM(items.qtymajor) AS sales, 
    buf.buffer_qty  AS BufferQty, 
    (bal.AJ1 + bal.AR2 + bal.AD3 + bal.DX4) 
     AS Stock, 
    (bal.AJ1 + bal.AR2 + bal.AD3 + bal.DX4) - buf.buffer_qty 
     AS Result 
FROM ProductMaster_T AS master 
    JOIN StockMain_T AS main 
     ON master.ProductID = main.ProdID 
    JOIN stockbuffers_T AS buf 
     ON main.ItemCode = buf.itemcode 
    JOIN stkbalance_T AS bal 
     ON main.ItemCode = bal.itemid 
    JOIN SaleItems_T AS items 
     ON items.ItemID = main.ItemCode 
ORDER BY 
    ProductName_VC ASC, 
    ItemDescription ASC 
GROUP BY ??? main.ItemCode ??? --- depends on your tables' 
            --- relationships       
関連する問題