2013-01-20 62 views
0

我有两个工作查询:连接两个独立查询的结果

1日返回产品列表:

$sql = " 
    SELECT a.stockID, a.stockCatID, a.stockName, a.stockCode, a.stockCatCode, 
    CONCAT_WS(' » ', d.stockCatName, c.stockCatName, b.stockCatName) AS stockPath, 
    a.stockName AS stockTitle, a.stockID AS uniStock 
    FROM stockcards a 
    LEFT OUTER JOIN stockcategories b 
    ON a.stockCatID = b.stockCatID 
    LEFT OUTER JOIN stockcategories c 
    ON b.stockParentCat = c.stockCatID 
    LEFT OUTER JOIN stockcategories d 
    ON c.stockParentCat = d.stockCatID "; 

第二个是基本返回总接收和总的差异发送whic的剩余量:

SELECT DISTINCT (COALESCE(o.totalReceived, 0) + COALESCE(p.totalSent, 0)) as RemainingStock 
FROM deliverydetails k 
INNER JOIN stockcards l ON k.stockID= l.stockID 
LEFT JOIN 
    (
     SELECT m.stockID, SUM(m.dQuantity) totalReceived 
     FROM deliverydetails m 
     WHERE m.dQuantity > 0 
     GROUP BY m.stockID 
    ) 
    o ON k.stockID = o.stockID 
LEFT JOIN 
    (
     SELECT n.stockID, SUM(n.dQuantity) totalSent 
     FROM deliverydetails n 
     WHERE n.dQuantity < 0 
     GROUP BY n.stockID 
    ) 
    p ON k.stockID = p.stockID 

我需要添加一个新的列到第一个查询显示remanining数量。但不能成功加入这两个。感谢您的任何提示。

回答

0

,因为它似乎是你的第二查询只是总结正面和负面dQuantities每个stockID,然后将它们放在一起,我觉得这个小的变化,以您的第一个查询是 所有需要:

SELECT a.stockID, a.stockCatID, a.stockName, a.stockCode, a.stockCatCode, 
    CONCAT_WS(' » ', d.stockCatName, c.stockCatName, b.stockCatName) AS stockPath, 
    a.stockName AS stockTitle, a.stockID AS uniStock, 
    dd.RemainingStock AS RemainingStock 
    FROM stockcards a 
    LEFT OUTER JOIN stockcategories b 
    ON a.stockCatID = b.stockCatID 
    LEFT OUTER JOIN stockcategories c 
    ON b.stockParentCat = c.stockCatID 
    LEFT OUTER JOIN stockcategories d 
    ON c.stockParentCat = d.stockCatID 
    LEFT OUTER JOIN 
    (SELECT stockID, SUM(dQuantity) AS RemainingStock 
    FROM deliverydetails 
    GROUP BY stockID) AS dd 
    ON dd.stockID = a.stockID 
相关问题