我有mysql表有4列(product1,sample1,peoduct2,sample)我想查询以获取sample1和sample32上的单元格总和,其中product1或product2 = 4

我用

$query="SELECT (SELECT SUM(sample1) FROM table WHERE product1= 4) + (SELECT SUM(sample2) FROM table WHERE product2 = 4)  AS SumCount";

$result = mysql_query($query) or die(mysql_error());
while($row=mysql_fetch_array($result)){ ?>
    <td>
    echo $row[1];
}

    product1       sample1        product2     sample2
-------------  -----------      -----------   -----------
5                 1                  3            5
7                 3                  4            6
4                 7                  8            7
10                8                  9            9
4                 2                  2            8
2                 5                  2            8


结果应该是值4(7 + 2 + 6),但是我为所有这样的产品制作了循环

4 15
2 21

但它给我1行而不是多行产品

最佳答案

您可以在sum表达式中使用条件语句来执行此操作,如下所示:

select sum((case when product1 = 4 then sample1 else 0 end) + (case when product2 = 4 then sample2 else 0 end)) total
  from stuff
    where product1 = 4 or product2 = 4;


如果要查看各个行上的值求和,只需删除sum,然后使用它:

select (case when product1 = 4 then sample1 else 0 end) + (case when product2 = 4 then sample2 else 0 end) total
  from stuff
    where product1 = 4 or product2 = 4;


如果您确实希望它显示加法公式,则可以将group_concat+用作分隔符,如下所示:

select group_concat((case when product1 = 4 then sample1 else 0 end) + (case when product2 = 4 then sample2 else 0 end) separator '+') total
  from stuff
    where product1 = 4 or product2 = 4;


这是为您准备的小提琴示例:http://sqlfiddle.com/#!9/bbf57/4

(请注意,如果product1和product2均为4,则这将包括它们的sample1和sample2,因此product1 = 4,sample1 = 5,product2 = 4,sample2 = 9会将计数加14)。

如果我仍未达到您期望的输出(您未提供示例,希望输出看起来如何),请告诉我,我将作进一步的更新。

根据评论更新

我认为这可能最终是您想要的。要获得所有产品的样品总和,一种简单的方法是创建一个临时表,将所有product1 / sample1,product2 / sample2合并到一个产品/样品表中,然后按组合产品字段分组以对组合样品求和价值观。

select product, sum(sample) total
  from
    (select product1 as product, sample1 as sample
       from stuff
     union all
     select product2 as product, sample2 as sample
       from stuff
    ) q1
    group by product


updated fiddle

10-07 12:26