0

此代码不起作用,因为它应该起作用我想使用 between and 子句检查开始和结束期间之间的 period_id 但无法做到

$return = Yii::app()->db->createCommand()
                            ->select('period_id')
                            ->from('SCHOOL_PERIODS')
                            ->where('school_id=:school_id', array(':school_id'=>$schoolId))
                            ->andWhere('syear=:syear', array(':syear'=>$schoolYear))
                            ->andWhere('ignore_scheduling IS NULL')
                            ->andWhere('period_id>:start', array(':start' => $startPeriod))
                            ->andWhere('period_id<:end', array(':end' => $maxPeriod))
                            ->order('sort_order asc')
                            ->queryAll();
        return $return;
4

1 回答 1

2

尝试像这样在尖括号之前和之后放置一个空格

period_id > :start

如果这仍然不起作用,请删除这两行

->andWhere('period_id>:start', array(':start' => $startPeriod))
->andWhere('period_id<:end', array(':end' => $maxPeriod))

然后改用以下内容

->andWhere('period_id > :start AND period_id < :end', array(':start' => $startPeriod',':end' => $maxPeriod))

如果您想使用 HAVING,请将此行添加到您的分组下方。这意味着您可以使用已运行的另一个查询中的值。

->having('period_id > :resultfromOtherQueryStart AND period_id:resultFromOtherQueryEnd',array(':resultFromOtherQuery'=>$otherQueryStart,':otherQueryEnd'=>$otherQueryEnd)) 
于 2013-10-22T13:16:14.343 回答