【问题标题】:Magento join only selected table column, avoid ambiguousMagento仅加入选定的表列,避免模棱两可
【发布时间】:2019-12-05 19:28:48
【问题描述】:

我正在尝试加入两个表,然后通过 product_id 对其进行过滤...

问题是两个表都有相同的列,我收到以下错误

Integrity constraint violation: 1052 Column 'product_id' in on clause is ambiguous, query was: SELECT COUNT(*) FROM `booking_ticket` AS `main_table`
 INNER JOIN `sales_flat_order_item` AS `order_item` ON order_item_id=order_item.item_id
 INNER JOIN `sales_flat_order` AS `order` ON order_item.order_id=order.entity_id
 LEFT JOIN `marketplace_commission` AS `marketplace_data` order.entity_id=marketplace_data.order_id WHERE (`product_id` IN('189'))

我是这样加入的

$this->getSelect()
            // ->reset(Zend_Db_Select::COLUMNS)
            // ->columns()
            ->joinLeft( // Product ID, Order ID
                array('marketplace_data' => $this->getTable('marketplace/commission')),
                'order.entity_id=marketplace_data.order_id',
                array(
                  "origin" => "marketplace_data.origin"
                )
            );

然后像这样过滤

$ticketCodes = Mage::getModel('booking/ticket')->getCollection()
      ->joinOrderData()->joinMarketPlaceData()
      ->addFieldToFilter('product_id',array('in'=> $id));

我需要加入我的市场表而不加入 product_id 列,因为订单表已经有产品 ID。我怎样才能做到这一点?正如上面评论的那样,我已经尝试过重置。没有效果。

提前谢谢你

【问题讨论】:

    标签: php mysql magento left-join ambiguous


    【解决方案1】:

    您需要 product_id 列的完全限定列名(假设 product_id 在 order_item 表中)

    SELECT COUNT(*) FROM `booking_ticket` AS `main_table`
    INNER JOIN `sales_flat_order_item` AS `order_item` ON order_item_id=order_item.item_id
    INNER JOIN `sales_flat_order` AS `order` ON order_item.order_id=order.entity_id
    LEFT JOIN `marketplace_commission` AS `marketplace_data` 
      ON `order_item`.product_id=marketplace_data.product_id
    WHERE (`order_item`.`product_id` IN('189'))
    

    【讨论】:

    • 好吧,那就是 addFieldToFilter('order_item.product_id') 并且起作用了。谢谢.. 但是有什么办法可以避免加入特定的列?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 2020-10-03
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多