总结一下最近实践上用到的sql语句



// 最近写的一些sql语句,感谢上级指导。(写这个文章时还不知道查postgreSql的手册,浪费了上级的时间,如果当时上级直接发我手册就好了)

// (写这个文章时实践还太少。个人觉得学习sql语言的最好方法是实践加查手册,上网搜。下面字段k_rea从 1~10,所以用了循环。pgsql可以存数组,上级说这样设计是为了方便新人,"||"是pgsql用的连接符号。mysql虽然存不了数据,不过可以存php的序列化数据,但是要查询和批量显示和求和的话,还是要1~10这样存。下面sql语句就今天看来并不值得写个博客。)

//注意 $res是资源
foreach($res as $key=>$val)
{
    $sql_select .= "case when m_k.k_rea{$val['code']}='1' then '{$val['name_short']}'||'/' else '' end||";
}
$sql_select .= "''";
$sql_select = "trim(trailing '/' from {$sql_select})";

/*
注:项目是用pg做的。有的sql语句别的数据库用不了。
因为要求传一句sql到我管不了的块,不能用php联,所以用到了case when 。
后面用了trim的语句进行了剪裁。
*/




$sql_select = "select m_k.k_code,sum(case when m_k.k_mf = 1 then 1 else 0 end) as cou_k1,sum(case when m_k.k_mf = 2 then 1 else 0 end) as cou_k2";
/*
你以为需要用两句sql的,再join一下。但在不需分主次的时候,case when 更简捷。


*/


$sql  = "select * from (" . $sql_b . ")A left join (" . $sql_a . ")";
/*
需要分主次的时候就join一下。
$sql_a和$sql_b比较相同的地方是
$sql_select =...
$sql_group =...(group 和 order)
$sql_on =...(join on)...


我把这三句写在前面,好加分支语句。


不同的地方是select的一部分和where部分,写在分支后面,再合上去。


如果还要求不用php来判断空,那么前面的$sql  = "select * from ("
这个*就要改成——COALESCE( B.cou_k1 , 0 )什么的。
一次把sql写清楚,避免以后php的大改,当然是很好的。
*/


//嗯,用了太多"号了,php中用"效率会差一些。——这句话好像没有依据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值