0

我尝试用相同的“pocde”列减去 2 个不同的表。我已经说明了下面的代码,但它对我不起作用。任何想法?

$result = mysql_query("
    SELECT 
        productlist.*, 
        SUM(rreturn.total)-SUM(rreturn.total) as totals, 
        SUM(rsales.tax)-SUM(rreturn.tax) as tax
    FROM productlist
    LEFT JOIN rsales ON rsales.pcode = productlist.pcode
    LEFT JOIN rreturn ON rreturn.pcode = productlist.pcode
    GROUP BY pcode
    ORDER BY total ASC");

    while($row = mysql_fetch_array($result)) {
            echo '<tr>';
            echo '<td style = "background-image:url(images/buts1.png)">'.($row['totals'].'</td>';   
            echo '<td style = "background-image:url(images/buts1.png)">'.($row['tax'].'</td>';              
            echo '</tr>';
    }
4

2 回答 2

0

由于 group by,您无法执行此查询。您可以像这样更改您的查询:

选择 pl.*、plagg.totals、plagg.tax
来自产品列表 pl
内部联接 (
    选择
        productlist.pcode,
        SUM(rreturn.total)-SUM(rreturn.total) 作为总计,
        SUM(rsales.tax)-SUM(rreturn.tax) 作为税
    来自产品列表
    左连接 rsales ON rsales.pcode = productlist.pcode
    左连接 rreturn ON rreturn.pcode = productlist.pcode
    GROUP BY productlist.pcode
) plagg on (plagg.pcode = pl.pcode)
于 2013-09-04T13:24:39.693 回答
-1

PHP 代码中存在错误,因为$row = mysql_fetch_array($result)创建了一个数值数组。你将不得不使用$row[0]$row[1]等等。如果你想在你的代码中使用一个关联$row['totals']的数组(等等),你要么必须使用

mysql_fetch_array($result, MYSQL_ASSOC)

或者你使用

mysql_fetch_assoc($result)

. 请注意,两者都已弃用,您应该真正使用 PDO。

于 2013-09-04T13:48:26.943 回答