Zend_Db_Table_Abstract和MySQL IN关键字

时间:2013-10-01 14:38:15

标签: php sql zend-framework zend-db

嘿我有一个使用IN关键字的查询。如何将其转换为zend select查询?

这是原始SQL格式的查询:

SELECT
            rs_credit_score,
            rs_fraud_score
FROM
            provenir_instance_response
WHERE
            application_number = @in_applcation_number
AND channel = @in_channel
AND final_decision_reason IN (
            'Failed CallCredit Delphi ID Check',
            'Failed Delphi KORules',
            'Credit Score Cut Matrix Failure',
            'Fraud Score Cut Matrix Failure',
            'Teletrack Rule Failure'

这就是我迄今为止在Zend中所拥有的:

public function scoreQuery($memId, $channel){
    //Build Query
    $select = $this->select();
    $select->from('provenir_instance_response', array('rs_credit_score', 'rs_fraud_score'));
    $select->where('application_number=?', $memId);
    $select->where('channel=?', $channel);
    $select->where('final_decision_reason IN Failed CallCredit Delphi ID Check');
    $select->where('final_decision_reason IN Failed Delphi KORules');
    $select->where('final_decision_reason IN Credit Score Cut Matrix Failure');
    $select->where('final_decision_reason IN Fraud Score Cut Matrix Failure');
    $select->where('final_decision_reason IN Teletrack Rule Failure');
    $result = $this->fetchAll($select);
    return $result;
}

或许这个?

public function scoreQuery($memId, $channel){
    //Build Query
    $select = $this->select();
    $select->from('provenir_instance_response', array('rs_credit_score', 'rs_fraud_score'));
    $select->where('application_number=?', $memId);
    $select->where('channel=?', $channel);
    $select->where('final_decision_reason IN (
    \'Failed CallCredit Delphi ID Check\',
        \'Failed Delphi KORules\',
        \'Credit Score Cut Matrix Failure\',
        \'Fraud Score Cut Matrix Failure\',
        \'Teletrack Rule Failure\'

    )');
    $result = $this->fetchAll($select);
    return $result;
}

我认为它应该是这样的?

public function scoreQuery($memId, $channel){
    //Build Query
    $select = $this->select();
    $select->from('provenir_instance_response', array('rs_credit_score', 'rs_fraud_score'));
    $select->where('application_number=?', $memId);
    $select->where('channel=?', $channel);
    $select->where('final_decision_reason IN (?)', array(
        'Failed CallCredit Delphi ID Check',
        'Failed Delphi KORules',
        'Credit Score Cut Matrix Failure',
        'Fraud Score Cut Matrix Failure',
        'Teletrack Rule Failure'
    ));
    $result = $this->fetchAll($select);
    return $result;
}

我是否对此有正确的解释或如何重构我的代码?

由于

内森:)

1 个答案:

答案 0 :(得分:0)

public function scoreQuery($memId, $channel){
//Build Query
$select = $this->select();
$select->from('provenir_instance_response', array('rs_credit_score', 'rs_fraud_score'));
$select->where('application_number=?', $memId);
$select->where('channel=?', $channel);
$select->where('final_decision_reason IN (?)', array(
    'Failed CallCredit Delphi ID Check',
    'Failed Delphi KORules',
    'Credit Score Cut Matrix Failure',
    'Fraud Score Cut Matrix Failure',
    'Teletrack Rule Failure'
));
$result = $this->fetchAll($select);
return $result;

}