order_item表
id orderid, name, factory, price
1     1           商品A    A           5
2     1           商品B    A          4
3     1           商品C   B          10
4     1           商品D   B          20select  factory, sum(price) from order_item where orderid=1 group by  factory然后foreach()
获取A与B的价格是否符合条件,符合则包邮,否则加5元。

解决方案 »

  1.   

    我的mysq表是这样设计的,表X的内容:
    id orderid    name   factory      price
    1     1            甲          A              10
    2     1            乙          A              12
    3     1            丙          B             13
    4     1            丁          B             14
      

  2.   

    然后是代码:
    $con=mysqli_connect('localhost','root','root','test');   //按照需要修改
    $sql="select sum(price) from x where factory='A'";       
    $a=mysqli_query($con,$sql);
    $b=mysqli_fetch_assoc($a);
    if($b['sum(price)']>=10){                                //如果A的两件商品总价大于10,则包邮
        echo 'A的两件商品总价大于10,包邮'."<br/>";
    }else{
        echo 'A的两件商品总价小于于10,不包邮'."<Br/>";
    }
    $sql="select sum(price) from x where factory='B'";
    $a=mysqli_query($con,$sql);
    $c=mysqli_fetch_assoc($a);
    if($c['sum(price)']>=50){                                //如果B的两件商品总价大于50,则包邮
        echo 'B的两件商品总价大于50,包邮'."<br/>";
    }else{
        echo 'B的两件商品总价小于于50,不包邮'."<Br/>";
    }
    if($b['sum(price)']<10 && $c['sum(price)']<50){          //只有两厂家都不包邮,加收5元运费。
        echo '两家都不包邮,加收5元运费';
    }A的两件商品总价大于10,包邮
    B的两件商品总价小于于50,不包邮
      

  3.   

    2楼的思路是对的,只是不知道代码具体怎么写。4楼第一个sql就有问题,where  factory=a没法作为条件来搜索的,因为factory不是确定的
      

  4.   

    select *, if(price<freight, 5, 0) as freight1 from
      (select factory, sum(price) as price from X group by factory) T, Y
      where T.factory = Y.factoryfactory price freight freight1 
    A       22    10      0 
    B       27    50      5 
      

  5.   

     $sql    = select  factory, sum(price) AS amount,freeamount  from order_item where orderid=1 group by  factory
       $row = $GLOBALS['db']->getall($sql);
         foreach ($row as $val)
            {
                      
               if($val['amount']>$val['freeamount'])      
               {
                $by=2;//返回2表示包邮
               }      
                else{ $by=3;}//返回3表示不包邮
                //如何将遍历后返回的$by进行比较,只要有一个返回的是包邮,就可以包邮
                           
          }