簡體   English   中英

Magento 只加入選定的表列,避免歧義

[英]Magento join only selected table column, avoid ambiguous

我正在嘗試加入兩個表,然后通過 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。 我怎樣才能做到這一點? 我已經嘗試重置,因為它是上面評論的。 沒有效果。

先感謝您

您需要 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'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM