简体   繁体   English

内部联接和按日期过滤不起作用引发完整性约束违反错误-Magento 1

[英]Inner Join and filter by date not working throws Integrity constraint violation error - Magento 1

I am trying to make an inner join on two tables to get data. 我试图对两个表进行内部联接以获取数据。 and it worked however when I search to get date from the table. 但是当我搜索从表中获取日期时它起作用了。 I get an error saying 我说错了

Integrity constraint violation: 1052 Column 'created_at' in where clause 
is ambiguous, query was: SELECT COUNT(*) FROM `sales_flat_order` AS 
`main_table`
INNER JOIN `sales_flat_order_item` ON main_table.store_id = 
sales_flat_order_item.store_id WHERE (`created_at` >= '2017-04-01'

This is my code 这是我的代码

    $collection = Mage::getModel('sales/order')->getCollection();

    $collection->addFieldToFilter('created_at');
    $collection->getSelect()->join("sales_flat_order_item", 
    "main_table.store_id = sales_flat_order_item.store_id", 
    array('name','sku','order_id','quantity'));

You can try something like this 您可以尝试这样的事情

$collection = Mage::getModel('sales/order')->getCollection();
$collection->addFieldToFilter('main_table.created_at', '2017-04-01');
$collection->getSelect()->join("sales_flat_order_item",
    "main_table.store_id = sales_flat_order_item.store_id",
    array('name','sku','order_id','qty_ordered'));

But your join looks weird maybe it would be better to use sales_flat_order.entity_id = sales_flat_order_item.order_id then store_id 但是您的联接看起来很奇怪,也许最好使用sales_flat_order.entity_id = sales_flat_order_item.order_id然后使用store_id

What exactly do you try to get by that select? 您到底要从中获得什么呢?

Please, describe your task. 请描述您的任务。

Solved it. 解决了。

$startDate = date("Y-m-d 00:00:00", strtotime( date( "Y-m-d 00:00:00", 
strtotime( date("Y-m-d 00:00:00") ) ) . "-10 months" ) );
$endDate = date("Y-m-d 00:00:00", strtotime( date( "Y-m-d 00:00:00", 
strtotime( date("Y-m-d 00:00:00") ) ) . "+1 day" ) );
$collection = Mage::getResourceModel('sales/order_item_collection')->addFieldToFilter('created_at', array('from' => $startDate, 'to' => $endDate)->addAttributeToSelect('*');
$this->setCollection($collection);
return parent::_prepareCollection();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM