Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL子查询错误:SQLSTATE[42S21]:_Php_Mysql_Yii - Fatal编程技术网

Php MySQL子查询错误:SQLSTATE[42S21]:

Php MySQL子查询错误:SQLSTATE[42S21]:,php,mysql,yii,Php,Mysql,Yii,我使用的是Yii 1.1.15,在我的模型中使用范围在我的查询中得到了一个重复的列名 function scopes () { return array( 'isUsed'=> array( 'alias' => 'd', 'join' => 'JOIN `ads` v', 'condition'=>'d.is_new="0

我使用的是Yii 1.1.15,在我的模型中使用
范围
在我的查询中得到了一个重复的列名

function scopes () {
     return array(
          'isUsed'=> array(
                    'alias' => 'd',
                    'join' => 'JOIN `ads` v',
                    'condition'=>'d.is_new="0"',
                    //'group'=>'v.store_id'
            ),
     );
}
它生成这个查询

 SELECT COUNT(*) FROM (
        SELECT * FROM `store` d 
        JOIN `ads` v 
        WHERE ((d.pending!="1") AND (d.is_new="0")) AND (v.store_id IN (6))
    ) sq
我告诉我这个错误

CDbCommand failed to execute the SQL statement: SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'id'. The SQL statement executed was: SELECT COUNT(*) FROM (
        SELECT * FROM `store` d 
        JOIN `ads` v 
        WHERE ((d.pending!="1") AND (d.is_new="0")) AND (v.store_id IN (6))
    ) sq 

你知道谁来解决这个问题吗?谢谢

这是因为子查询中的列不明确
在子查询中,应该使用特定的列名称,而不是*

请参考以下示例:

SELECT COUNT(*) FROM (
        SELECT d.columnName,v.columnName,.... FROM `store` d 
        JOIN `ads` v 
        WHERE ((d.pending!="1") AND (d.is_new="0")) AND (v.store_id IN (6))
    ) sq

我不确定你的情况是否会有帮助!!添加'select'=>'d.*,v.*'因为您只计算行,所以静态的
select
值也会起作用,例如
select 1
@vijay4vijju会得到相同的值error@vijay4vijju
CDbCommand无法执行SQL语句:SQLSTATE[42S21]:列已存在:1060重复的列名“id”。执行的SQL语句是:SELECT COUNT(*)FROM(SELECT d.*,v.*。
@vijay4vijju nevermind,只将我需要的字段添加到
SELECT
中,它工作了。感谢您的提示