SELECT
CONCAT(us.user_id,' ', us.name),
UPPER(sc.so_number) Order_no ,
sh.upc UPC,re.label Error,
(SELECT count(*) FROM order_checker_scan scan WHERE scan.so_number =sh.so_number and scan.upc=sh.upc and scan.user_id!=0
and DATE_FORMAT(scan_time,'%Y-%m-%d') >= '2015-11-01' ) AS
prev_data,
(select CONCAT(u.user_id,' ', u.name) from users u,picklist_history p where u.user_id=p.user_id and
p.so_number=sh.so_number limit 1) as picker,
sh.item_key Times,
DATE_FORMAT(sc.date_started,'%b%d %Y %h:%i%p') datetime,sh.qty_required QTY
FROM
order_checker_short sh,
order_checker_header
sc,order_checker_short_reason re,
users us
WHERE sh.so_number=sc.so_number AND
sh.reason_id=re.reason_id AND
sc.created_by=us.user_id And
sc.created_by!=0 AND
DATE_FORMAT(date_started,'%Y-%m-%d') between '2015-11-16' and '2015-11-17' AND
sh.reason_id !=0 AND
sh.upc !=1
GROUP BY sc.so_number,sh.upc
ORDER BY sc.date_started DESC, sc.so_number DESC , sh.upc ASC
如何使用dbSelect将此Mysql查询实现到Zend框架1中
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- dongming6201 2015-11-18 11:31关注
Please test the following:
// 1st subselect $prevDataSelect = $db->select() ->from(array('scan' => 'order_checker_scan'), array('count(*)')) ->where('scan.so_number = sh.so_number') ->where('scan.upc = sh.upc') ->where('scan.user_id != 0') ->where("DATE_FORMAT(scan_time,'%Y-%m-%d') >= '2015-11-01'"); // 2nd subselect $pickerSelect = $db->select() ->from(array('u' => 'users', 'p' => 'picklist_history'), array("CONCAT(u.user_id,' ', u.name)")) ->where('u.user_id = p.user_id') ->where('p.so_number = sh.so_number') ->limit(1); // Main selection $mainSelect = $db->select() ->from( // tables array( 'sh' => 'order_checker_short', 'sc' => 'order_checker_header', 're' => 'order_checker_short_reason', 'us' => 'users', ), // columns array( 'SomeName' => "CONCAT(us.user_id, ' ', us.name)", 'Order_no' => 'UPPER(sc.so_number)', 'UPC' => 'sh.upc', 'Error' => 're.label', 'prev_data' => new Zend_Db_Expr('(' . $prevDataSelect . ')'), 'picker' => new Zend_Db_Expr('(' . $pickerSelect . ')'), 'Times' => 'sh.item_key', 'datetime' => "DATE_FORMAT(sc.date_started,'%b%d %Y %h:%i%p')", 'QTY' => 'sh.qty_required', ) ) // AND WHERE clauses ->where('sh.so_number = sc.so_number') ->where('sh.reason_id = re.reason_id') ->where('sc.created_by = us.user_id') ->where('sc.created_by != 0') ->where("DATE_FORMAT(date_started, '%Y-%m-%d') between '2015-11-16' and '2015-11-17'") ->where('sh.reason_id != 0') ->where('sh.upc != 1') // GROUP BY clause ->group(array('sc.so_number', 'sh.upc')) ->order(array('sc.date_started DESC', 'sc.so_number DESC', 'sh.upc ASC'));
If doesn't work please tell me what's the output of
$mainSelect->assemble()
解决 无用评论 打赏 举报
悬赏问题
- ¥15 微信会员卡接入微信支付商户号收款
- ¥15 如何获取烟草零售终端数据
- ¥15 数学建模招标中位数问题
- ¥15 phython路径名过长报错 不知道什么问题
- ¥15 深度学习中模型转换该怎么实现
- ¥15 HLs设计手写数字识别程序编译通不过
- ¥15 Stata外部命令安装问题求帮助!
- ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
- ¥15 TYPCE母转母,插入认方向
- ¥15 如何用python向钉钉机器人发送可以放大的图片?