我使用分组付款方式从表中获取数据。在组中发生的事情是数据出现,对应于表中的那些数据。但我希望所有付款类型都显示在结果中。 我正在使用以下查询。
$query = "select paytype ,sum(totalamount) from `tbl_payments` group by paytype";
有5种(现金,信用卡,PayPal ..)付款方式。我希望所有付款方式都包含结果,因此如果查询结果未找到paytype,则应将其添加为['credit'] =>[0]
,意为paytype => amount(which should be 0 at that case)
。
请帮我解决这个问题。
答案 0 :(得分:1)
您没有说明包含有效付款方式列表的表格paytype
。
要获取结果中的所有付款方式,您必须使用左连接。类似的东西:
select pt.paytype, sum(p.totalamount)
from `tbl_paytypes` pt
left join `tbl_payments` p
on pt.paytype = p.paytype
group by pt.paytype
答案 1 :(得分:0)
使用带有paymettypes表格的左连接获取所有付款类型
答案 2 :(得分:0)
最好的方法是使用实体类, 离。
class PaymentTypes{ private $cash; private $credit; private $paypal; ....
//constructor
//setters and getters }
在构造函数中,如果没有任何值,可以为字段设置默认参数
public function __construct($array){ $someDefaultValue = ''; if(!empty($array['name_of_column_in_databaseTable'])){ $this->$cash
= $array['name_of_column_in_databaseTable']; }else{ $this->$cash = $someDefaultValue; } ... }
数据库的结果就像数组(array(),array(),...)
所以你可以:
foreach($result as $key=>$value){
$paymentTypes[] = new PaymentTypes($value);
}