ich eine MySQL-Datenbank haben, die drei Tabellen enthält:
- Produkttabelle
- stockin Tabelle
- stockout Tabelle
Und ich habe die folgende Abfrage, die gut funktioniert, und es hilft mir das zu erzeugen, Legder Bericht auf Bild 4 unten:
SELECT
Product.Product_Code,
Product.Product_Color,
Product.Product_Model,
IFNull(QtyBeginningStockIn.Qty_In, 0)-IFNull(QtyBeginningStockOut.Qty_Out, 0) QtyBeginningStock,
IFNull(UntyBeginningStockIn.Uprice_In, 0) UntyBeginningStock,
IFNull(BeginningStockIn.Amount, 0)-IFNull(BeginningStockOut.Amount, 0) BeginningStock,
IFNull(QtyPeriodStockIn.Qty_In, 0) QtyStockIn,
IFNull(UntyPeriodStockIn.Uprice_In, 0) UntyStockIn,
IFNull(PeriodStockIn.Amount, 0) StockIn,
IFNull(QtyPeriodStockOut.Qty_Out, 0) QtyStockOut,
IFNull(UntyPeriodStockOut.Uprice_Out, 0) UntyStockOut,
IFNull(PeriodStockOut.Amount, 0) StockOut,
IFNull(QtyBeginningStockIn.Qty_In, 0)-IFNull(QtyBeginningStockOut.Qty_Out, 0)+IFNull(QtyPeriodStockIn.Qty_In, 0)-IFNull(QtyPeriodStockOut.Qty_Out, 0) QtyStockBalance,
IFNull(UntyclosingStockIn.Uprice_In, 0) UntyclosingStockIn,
IFNull(BeginningStockIn.Amount, 0)-IFNull(BeginningStockOut.Amount, 0)+IFNull(PeriodStockIn.Amount, 0)-IFNull(PeriodStockOut.Amount, 0) StockBalance
FROM Product
LEFT JOIN
(
SELECT
SUM(Qty_In) Qty_In,
Product_Code
FROM StockIn
WHERE StockIn_Date < '2012/01/02'
group by Product_Code
) QtyBeginningStockIn ON QtyBeginningStockIn.Product_Code = Product.Product_Code
LEFT JOIN
(
SELECT
SUM(Qty_Out) Qty_Out,
Product_Code
FROM Stockout
WHERE StockOut_Date < '2012/01/02'
group by Product_Code
) QtyBeginningStockOut ON QtyBeginningStockOut.Product_Code = Product.Product_Code
LEFT JOIN
(
SELECT
Uprice_In,
Product_Code
FROM StockIn
WHERE StockIn_Date < '2012/01/02'
group by Product_Code
) UntyBeginningStockIn ON UntyBeginningStockIn.Product_Code = Product.Product_Code
LEFT JOIN
(
SELECT
SUM(Amount) Amount,
Product_Code
FROM StockIn
WHERE StockIn_Date < '2012/01/02'
group by Product_Code
) BeginningStockIn ON BeginningStockIn.Product_Code = Product.Product_Code
LEFT JOIN
(
SELECT
SUM(Amount) Amount,
Product_Code
FROM StockOut
WHERE StockOut_Date < '2012/01/02'
group by Product_Code
) BeginningStockOut ON BeginningStockOut.Product_Code = Product.Product_Code
LEFT JOIN
(
SELECT
SUM(Qty_In) Qty_In,
Product_Code
FROM StockIn
WHERE StockIn_Date >= '2012/01/02' AND StockIn_Date < '2012/01/31'
group by Product_Code
) QtyPeriodStockIn ON QtyPeriodStockIn .Product_Code = Product.Product_Code
LEFT JOIN
(
SELECT
Uprice_In,
Product_Code
FROM StockIn
WHERE StockIn_Date >= '2012/01/02' AND StockIn_Date < '2012/01/31'
group by Product_Code
) UntyPeriodStockIn ON UntyPeriodStockIn .Product_Code = Product.Product_Code
LEFT JOIN
(
SELECT
SUM(Amount) Amount,
Product_Code
FROM StockIn
WHERE StockIn_Date >= '2012/01/02' AND StockIn_Date < '2012/01/31'
group by Product_Code
) PeriodStockIn ON PeriodStockIn .Product_Code = Product.Product_Code
LEFT JOIN
(
SELECT
SUM(Qty_Out) Qty_Out,
Product_Code
FROM Stockout
WHERE StockOut_Date >= '2012/01/02' AND StockOut_Date < '2012/01/31'
group by Product_Code
) QtyPeriodStockOut ON QtyPeriodStockOut .Product_Code = Product.Product_Code
LEFT JOIN
(
SELECT
Uprice_Out,
Product_Code
FROM Stockout
WHERE StockOut_Date >= '2012/01/02' AND StockOut_Date < '2012/01/31'
group by Product_Code
) UntyPeriodStockOut ON UntyPeriodStockOut .Product_Code = Product.Product_Code
LEFT JOIN
(
SELECT
SUM(Amount) Amount,
Product_Code
FROM StockOut
WHERE StockOut_Date >= '2012/01/02' AND StockOut_Date < '2012/01/31'
group by Product_Code
) PeriodStockOut ON PeriodStockOut.Product_Code = Product.Product_Code
LEFT JOIN
(
SELECT
Uprice_In,
Product_Code
FROM StockIn
WHERE StockIn_Date < '2012/01/02'
group by Product_Code
) UntyclosingStockIn ON UntyclosingStockIn.Product_Code = Product.Product_Code
Und meine Frage ist, ist es möglich, einen Ledger Bericht zu erzeugen, die alle Transaktionen von Details anzeigen können Transaktionsdatum enthalten, anstatt Transaktion wie in meinem Bericht zusammenzufassen? Welche Abfrage kann ich verwenden? Danke
Alles ist möglich –
Sie benötigen ein exaktes erwartetes Ergebnis zu schaffen, und was Sie haben versucht, es zu achive. – Shadow