在写的php 简单的orm实现 -- 用以解决昨天面试时的sql测试题

-- ----------------------------
CREATE TABLE `stu` (
  `snum` int(11) NOT NULL,
  `name` varchar(40) NOT NULL,
  `lesson` varchar(40) NOT NULL,
  `score` int(8) NOT NULL,
  PRIMARY KEY  (`snum`,`lesson`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

 

查出总科目的平均分 大于 45的 学生记录

 

xser::load_library('orm','orm');
		orm::init('mysql/localhost:3306/sesecn_blog:utf8/root:root',xser::log_provider());


		orm::getDBO()->insert('stu',array(
			'snum'=>11,'name'=>'衰男', 'lesson'=>'英语','score'=>55
		));
		orm::getDBO()->insert('stu',array(
			'snum'=>11,'name'=>'衰男', 'lesson'=>'语文','score'=>88
		));
		orm::getDBO()->insert('stu',array(
			'snum'=>11,'name'=>'衰男', 'lesson'=>'数学','score'=>44
		));
		
		orm::getDBO()->insert('stu',array(
			'snum'=>12,'name'=>'兽女', 'lesson'=>'英语','score'=>36
		));
		orm::getDBO()->insert('stu',array(
			'snum'=>12,'name'=>'兽女', 'lesson'=>'语文','score'=>48
		));
		orm::getDBO()->insert('stu',array(
			'snum'=>12,'name'=>'兽女', 'lesson'=>'数学','score'=>41
		));
		
		$records = orm::getDBO()->select(
			'stu',
			"snum as '学号' ,name as '名字',sum(score) as '总分',avg(score) as '平均分'",
			null ,
			'snum',
			array('avg(score)'=>array(42,'>'))
		);
		
		xser::dump($records,orm::getDBO()->get_last_sql());

 

结果:

SELECT snum as '学号' ,name as '名字',sum(score) as '总分',avg(score) as '平均分' FROM `test`.`stu`   GROUP BY snum   HAVING  avg(score) > 42   :
Array
(
    [0] => Array
        (
            [学号] => 11
            [名字] => 衰男
            [总分] => 187
            [平均分] => 62.3333
        )

)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值