我有三张桌子(订单、产品、订单)。我有约会。按顺序,我有orderproduct_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())');

但当我没有命令结果是空的。我应该一直拥有所有的产品。对不起我的英语。谢谢。

最佳答案

这很难。正确的SQL:

USE lyf;
SELECT
  *
FROM
  `order` AS o
  LEFT JOIN order_item AS oi ON oi.order_id = o.id
  RIGHT JOIN product AS p ON oi.product_id = p.id
WHERE
  IF(o.`date` IS NOT NULL, MONTH(o.`date`) = MONTH(NOW()), 1) = 1

关于php - zend框架加入3个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4732699/

10-11 03:20