sql >> データベース >  >> RDS >> Mysql

このMagentoクエリの何が問題になっていますか?

    友人のWebサイト用に1.9.2.2にアップグレードしてこの問題が発生したので、次のパッチをファイルに配置しました。

    [magento / app / code / core / Mage / CatalogRule / Model / Action / Index / Refresh.php]

    オンフロー効果がどのようなものかはわかりません。もちろん、このファイルが上書きされた場合にこの機能を見逃さないように注意する必要がありますが、開始するには次の行を追加してください:

    'rules_hash'            => new Zend_Db_Expr('NULL'),
    

    selectステートメントを次のように表示するには:

    $select = $this->_connection->select()
            ->from($indexSelect, array())
            ->joinInner(
                array(
                    'dates' => $this->_connection->select()->union(
                        array(
                            new Zend_Db_Expr(
                                'SELECT ' . $this->_connection->getDateAddSql(
                                    $this->_connection->fromUnixtime($time),
                                    -1,
                                    Varien_Db_Adapter_Interface::INTERVAL_DAY
                                ) . ' AS rule_date'
                            ),
                            new Zend_Db_Expr('SELECT ' . $this->_connection->fromUnixtime($time) . ' AS rule_date'),
                            new Zend_Db_Expr(
                                'SELECT ' . $this->_connection->getDateAddSql(
                                    $this->_connection->fromUnixtime($time),
                                    1,
                                    Varien_Db_Adapter_Interface::INTERVAL_DAY
                                ) . ' AS rule_date'
                            ),
                        )
                    )
                ),
                '1=1',
                array()
            )
            ->columns(
                array(
                    'rule_product_price_id' => new Zend_Db_Expr('NULL'),
                    'rule_date'             => 'dates.rule_date',
                    'customer_group_id'     => 'customer_group_id',
                    'product_id'            => 'product_id',
                    'rule_price'            => 'MIN(rule_price)',
                    'website_id'            => new Zend_Db_Expr($website->getId()),
                    'latest_start_date'     => 'latest_start_date',
                    'earliest_end_date'     => 'earliest_end_date',
                    /**
                    Added because rules_hash was created by some module and not handled properly,
                    see http://stackoverflow.com/questions/19480415/whats-wrong-with-this-magento-query
                    */
                    'rules_hash'            => new Zend_Db_Expr('NULL'),
                )
            )
            ->where(new Zend_Db_Expr($this->_connection->getUnixTimestamp('dates.rule_date') . " >= from_time"))
            ->where(
                $this->_connection->getCheckSql(
                    new Zend_Db_Expr('to_time = 0'),
                    new Zend_Db_Expr(1),
                    new Zend_Db_Expr($this->_connection->getUnixTimestamp('dates.rule_date') . " <= to_time")
                )
            )
            ->group(array('customer_group_id', 'product_id', 'dates.rule_date'));
    
        return $select;
    


    1. エラーの修正:SQLiteの「UNIONの左右のSELECTには同じ数の結果列がありません」

    2. MysqlでLIKE基準を使用してテーブルをパーティション化する方法

    3. where_inでimplode関数を使用するCodeigniterクエリビルダー

    4. Javaを使用したデータベース内の英語以外の文字