sql查询条件检查

时间:2012-11-21 10:14:12

标签: php mysql

我有桌子

  • sales_orders

在此表中具有列名

  • order_no
  • ORDER_STATUS
  • ORDER_TYPE

SQL查询:

SELECT order_no FROM sales_orders where order_status='Pending' and order_type='1'

在上面的查询中,如果数据库列中不存在order_type=1值而不是值1,则值为'0',我想显示错误。

如何修改上述查询?

5 个答案:

答案 0 :(得分:1)

如果我理解正确,如果order_type不等于1,你想显示错误。如果是这样,你可以这样做:

$query = "SELECT order_no FROM sales_orders where order_status='Pending' and order_type = 1";

if ($result = $mysqli->query($query)) {
    while ($row = $result->fetch_object()) {
        if ($row->order_type != 1) {
            printf('There is no rail order for order number %d', $row->order_no);
        }
    }

    $result->close();
}

答案 1 :(得分:0)

试试这个:

SELECT IF(order_type=1,order_no,'Error') 
FROM sales_orders 
WHERE order_status='Pending'

答案 2 :(得分:0)

SQL应该是这样的(你不能在WHERE中使用order_type = 1,因为你想要回复“errornous”结果,因此你需要在那里使用IF):

SELECT IF(order_type=1,'OK','Error') AS okErrorFlag ,order_no
FROM sales_orders 
WHERE order_status='Pending'

在sql中(我现在接受一个关联数组作为结果,你只有相应行的结果):

if ($row['okErrorFlag']=='Error')
{
     echo 'ERROR: There is no rail order';
}

答案 3 :(得分:0)

尝试使用案例陈述

select id,
case order_type
    when '1' then order_type
    when '0' then 'error'
end 
from
`sales_orders`
where order_status='pending'

答案 4 :(得分:0)

最后,我得到了我需要的东西......

这是查询:

  • $ sql_da_num =“SELECT order_no FROM sales_orders WHERE order_status ='Pending'和order_type ='1');

                $result_da_num= db_query($sql_da_num);
                $num_rows = db_num_rows($result_da_num);
                if ($num_rows==0)
                {
                display_error("There is no Rail Order for this selected customer");
                }
                }