Magento join only selected table 列,避免歧义
Magento join only selected table column, avoid ambiguous
我正在尝试连接两个 table,然后按 product_id...
过滤它
问题是两个 table 有相同的列,我得到以下错误
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 列的情况下加入我的市场 table,因为订单 table 已有产品 ID。我怎样才能做到这一点?我试过按照上面的评论进行重置。没有效果。
提前致谢
您需要 product_id 列的完全限定列名称(假设 product_id 在 order_item table 中)
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'))
我正在尝试连接两个 table,然后按 product_id...
过滤它问题是两个 table 有相同的列,我得到以下错误
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 列的情况下加入我的市场 table,因为订单 table 已有产品 ID。我怎样才能做到这一点?我试过按照上面的评论进行重置。没有效果。
提前致谢
您需要 product_id 列的完全限定列名称(假设 product_id 在 order_item table 中)
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'))