在PHP中使用IF条件的Mysql选择查询

时间:2016-01-19 07:45:01

标签: php mysql codeigniter

我正在编写一个mysql查询,根据id查找两个字段的总和。我尝试在select查询中使用IF条件编写查询。这是我的疑问:

`SELECT (IF(`tax_rate_id`=2,SUM(`net_unit_price`*`quantity`),0)) AS sale5

    (IF(`tax_rate_id`=3,SUM(`net_unit_price`*`quantity`),0)) AS sale145

    FROM sma_sale_items

    where sale_id=4221`

我不知道我的查询是否正确..如果不可能有任何其他方法来实现这一目标吗?此外,我想在codeigniter中执行相同的查询。任何人都可以帮助我..

2 个答案:

答案 0 :(得分:4)

您可以将条件和用于与

相同的内容
select
sum( case when tax_rate_id = 2 then net_unit_price*quantity else 0 end) as sale5,
sum( case when tax_rate_id = 3 then net_unit_price*quantity else 0 end) as sale145
from sma_sale_items
where sale_id=4221

答案 1 :(得分:1)

MySQL查询

SELECT IF(`tax_rate_id`=2,
          SUM(`net_unit_price`*`quantity`),
          0) AS sale5,
       IF(`tax_rate_id`=3,
          SUM(`net_unit_price`*`quantity`),
          0) AS sale145 
FROM sma_sale_items 
WHERE sale_id=4221

您可以在codeigniter中使用这样的内容

 $this->db->select('IF(`tax_rate_id`=2,SUM(`net_unit_price`*`quantity`),0) AS sale5', FALSE);
    $this->db->select('IF(`tax_rate_id`=3,SUM(`net_unit_price`*`quantity`),0) AS sale145', FALSE);
    $this->db->from('sma_sale_items');
    $this->db->where(array('sale_id'=>4221));
    $result = $this->db->get();

    echo $this->db->last_query();