3.2.3关于多表查询的问题

浏览:1211 发布日期:2016/06/03 分类:求助交流 关键字: 数据库查询
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'a.shop_price' in 'where clause'
这个应该说的是 我的表中没有这个字段 我是用的多表查询的时候出现的错误
主要错误是 连贯操作的where()
//价格搜素
在这定义了这么一段主要用于查询:
  $fp = I('get.fp');
           $tp = I('get.tp');
           if ($fp && $tp){
             $where['a.shop_price'] = array('between',array($fp,$tp));
            }
如果这样调用以下:$this->order("$orderby $orderway")
                ->field('a.*,b.brand_name')
                ->alias('a')
                ->join('LEFT JOIN __BRAND__ b ON a.brand_id = b.id')//ps_brand == __BRAND__
                ->where($where)
                ->limit($pageobj->firstRow.','.$pageobj->listRows)
                ->select();
结果提示的是:SQLSTATE[42S22]: Column not found: 1054 Unknown column 'a.shop_price' in 'where clause'如果这么定义:
$fp = I('get.fp');
           $tp = I('get.tp');
           if ($fp && $tp){
             $where['shop_price'] = array('between',array($fp,$tp));
            }
如果这样调用以下:$this->order("$orderby $orderway")
                ->field('a.*,b.brand_name')
                ->alias('a')
                ->join('LEFT JOIN __BRAND__ b ON a.brand_id = b.id')//ps_brand == __BRAND__
                ->where($where)
                ->limit($pageobj->firstRow.','.$pageobj->listRows)
                ->select();
结果是对的
我特意看了一下 sql语句:SELECT a.*,b.brand_name FROM ps_goods a LEFT JOIN ps_brand b ON a.brand_id = b.id [b]WHERE `shop_price` BETWEEN '1000' AND '5000' [b]ORDER BY a.id desc LIMIT 0,3 加粗的部分就是问题的所在 我试了一下 如果 shop_price 改成a.shop_price 就是1054错误
如果sql语句是:SELECT a.*,b.brand_name FROM ps_goods a LEFT JOIN ps_brand b ON a.brand_id = b.id [b]WHERE a.shop_price BETWEEN '1000' AND '5000' [b]ORDER BY a.id desc LIMIT 0,3 这样的话是我要的结果 可以为什么where 按数组传递的时候 所以是字符串呢?
怎么解决?
求大神 这怎么解决呢
最佳答案
评论( 相关
后面还有条评论,点击查看>>