How can I make a mysql that will display all a specific product with different serial number and quantity available. Take note that my client does not have a table that store quantities, what we have are:
- received_purchase_order_detail
- received_transfer_order_detail
- transfer_order_detail
- official_receipt_detail
- ... and many more tables... these are the table we used to know how much more quantity are available.
quantity available = ( received_purchase_order_detail+received_transfer_order_detail )-( transfer_order_detail+official_receipt_detail .... )
I already have a query given by FuzzyTree but it shows a group by product quantity.
MySQL Group By Product Id BUT NOT Product that has a Serial Number
What I need now is to query the products id which has different serial numbers and show each quantity available.
Rather than
Product_ID Product_Name Quantity_Available
6 Apple 100
7 Blender 2
8 Toaster 3
I need
Product_ID Product_Name Serial_No Quantity_Available
6 Apple NULL 100
7 Blender b1 0
7 Blender b2 1
7 Blender b3 1
8 Toaster t1 1
8 Toaster t2 1
8 Toaster t3 1
-------
My test sql now Problem: i've been combining a derived table with union and made the s_product_serial group by so that they will separate. But my query is showing all of the product with serial quantity_available to 0, its like they are following the first data of the first product with a serial that is sold.., only the first blender with b1 serial is sold but the other blender should still be available..
Note I added a union query because the products table does not have serial_no column..., the serial are scattered on different tables. So what i did first is union the tables to collect the complete serial_no available. Or maybe I'm approaching this the wrong way?
Problem
Product_ID Product_Name Serial_No Quantity_Available
6 Apple NULL 100
7 Blender b1 0
7 Blender b2 0
7 Blender b3 0
8 Toaster t1 0
8 Toaster t2 0
8 Toaster t3 0
SELECT
tabletest1.i_p_id,
tabletest1.s_product_serial,
(
COALESCE(tabletest1.Product_Total,0) +
COALESCE(table1.Product_Total,0) +
COALESCE(table2.Product_Total,0) +
COALESCE(table3.Product_Total,0)
) AS 'Total QTY Added',
(
COALESCE(tabletest1.Product_Total,0) +
COALESCE(table4.Product_Total,0) +
COALESCE(table5.Product_Total,0) +
COALESCE(table6.Product_Total,0)
) AS 'Total QTY Released',
(
COALESCE(tabletest1.Product_Total,0) +
COALESCE(table1.Product_Total,0) +
COALESCE(table2.Product_Total,0) +
COALESCE(table3.Product_Total,0)
) -
(
COALESCE(tabletest1.Product_Total,0) +
COALESCE(table4.Product_Total,0) +
COALESCE(table5.Product_Total,0) +
COALESCE(table6.Product_Total,0)
) AS 'Current Quantity Available'
FROM
(
..union query..
)
AS tabletest1
LEFT JOIN
(
derivedtable1..
)
AS table1 ON table1.i_p_id = tabletest1.i_p_id
LEFT JOIN
(
derivedtable2..
)
AS table2 ON table2.i_p_id = tabletest1.i_p_id
LEFT JOIN
(
derivedtable3..
)
AS table3 ON table3.i_p_id = tabletest1.i_p_id
LEFT JOIN
(
derivedtable4..
)
AS table4 ON table4.i_p_id = tabletest1.i_p_id
LEFT JOIN
(
derivedtable5..
)
AS table5 ON table5.i_p_id = tabletest1.i_p_id
LEFT JOIN
(
derivedtable6..
)
AS table6 ON table6.i_p_id = tabletest1.i_p_id
GROUP BY
i_p_id,
s_product_serial