从三个数值矩阵计算当前库存

时间:2017-06-28 12:49:05

标签: php mysql arrays

Sudipta的建议奏效了。现在我很难让最终的脚本在线显示。该脚本在phpMyAdmin SQL编辑器中正确显示。

$sql = "CREATE  TABLE Inv_Physical_Count
        SELECT  SUM(qty) as qty, excel_part_num, part_id, part_desc, order_form_seq
        FROM    Inventory, Inventory_Items, Parts
        WHERE   Inventory.id = Inventory_Items.inventory_id
        AND     Inventory_Items.part_id = Parts.id
        AND     Inventory.date = '2017-01-05'
        AND     Inventory.inv_type_id = '2'
        GROUP BY part_id
        ORDER BY part_id";

        $q = $pdo->prepare($sql);
        $q->execute(array());

$sql = "CREATE  TABLE Inv_Restock
        SELECT  SUM(qty) as qty, excel_part_num, part_id, part_desc, order_form_seq
        FROM    Inventory, Inventory_Items, Parts
        WHERE   Inventory.id = Inventory_Items.inventory_id
        AND     Inventory_Items.part_id = Parts.id
        AND     Inventory.date >=  '2017-01-05'
        AND     Inventory.date <  '2017-07-04'
        AND     Inventory.inv_type_id = '1'
        GROUP BY part_id
        ORDER BY part_id";

        $q = $pdo->prepare($sql);
        $q->execute(array());

$sql = "CREATE  TABLE Inv_Orders
        SELECT  SUM(qty) as qty, excel_part_num, part_id, part_desc, order_form_seq
        FROM    Orders, Order_Items, Parts
        WHERE   Orders.id = Order_Items.orders_id
        AND     Order_Items.part_id = Parts.id
        AND     Orders.date_order >= '2017-01-05'
        AND     Orders.date_order < '2017-07-04'
        GROUP BY part_id
        ORDER BY part_id";

        $q = $pdo->prepare($sql);
        $q->execute(array());

以下SQL脚本在phpMyAdmin的SQL编辑器中工作。但是,在PHP中我无法使用此脚本来显示真实内容。这一切都是空白的。

$sql = "SELECT  a.qty + b.qty - c.qty as 'QTY', a.excel_part_num as 'Part Num', a.part_desc as 'Description'
        FROM    Inv_Physical_Count a,
                Inv_Restock b,
                Inv_Orders c
        WHERE   a.part_id = b.part_id
        AND     a.part_id = c.part_id
        ORDER BY a.order_form_seq";

        $q = $pdo->prepare($sql);
        $q->execute(array());

        while ($row = $q->fetch(PDO::FETCH_ASSOC)) 
        {
            echo    '<tr>';
            echo    '<td>' . $row['qty'] . '</td>';
            echo    '<td>' . $row['excel_part_num'] . '</td>';
            echo    '<td>' . $row['part_desc'] . '</td>';               
        }

1 个答案:

答案 0 :(得分:1)

您是否可以按以下方式组合所有查询?它会工作,如果你有相同的part_id,如果它不相同,也许你可以加入表part_num而不是part_id

SELECT SUM(a.qty + b.qty - c.qty), part_num
FROM Phys_Count a
LEFT JOIN Items_Received b
ON  a.part_id = b.part_id
JOIN items_shipped c
ON  a.part_id = c.part_id
WHERE ...
GROUP BY part_num
ORDER BY part_id