zend框架连接3个表
我有 3 个表(订单、产品、订单项目)。在订单
中我有日期。在 order_item 中,我有 product_id
和 order_id
。我需要选择当月创建的所有有订单的产品。这是我的选择:
$select = $this->select()
->setIntegrityCheck(false)
->from(array('o' => 'order'))
->join(array('oi' => 'order_item'), 'o.id = oi.order_id', array('quantity'))
->joinLeft(array('p' => 'product'), 'p.id = oi.product_id', array('id', 'pbv', 'name'))
->where('MONTH(o.date) = MONTH(CURDATE())');
但是当我没有订单时结果为空。我应该永远拥有所有产品。对不起我的英语。谢谢。
I have 3 tables (order, product, order_item). In order
i have the date. In order_item i have product_id
and order_id
. I need to select all products with orders, what created in the current month. It is my select:
$select = $this->select()
->setIntegrityCheck(false)
->from(array('o' => 'order'))
->join(array('oi' => 'order_item'), 'o.id = oi.order_id', array('quantity'))
->joinLeft(array('p' => 'product'), 'p.id = oi.product_id', array('id', 'pbv', 'name'))
->where('MONTH(o.date) = MONTH(CURDATE())');
But when i haven't orders result is empty. And i should always have all products. Sorry for my english. Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这非常困难。正确的 SQL:
It was very hard. The right SQL:
您需要将 joinLeft 切换为 joinRight,或者将产品表放在查询中的第一位。
You need to either switch your joinLeft to a joinRight, or put your product table first in the query.