使用mysql查询主表有数据,副表0条数据的列表

SELECT * FROM `order` as a where 0=(select count(*) from goods_evaluate where order_id=a.id)

Thinkphp6的用法一:

Db::name('order')
->alias('a')
->whereRaw('0=(select count(*) from goods_evaluate where order_id=a.id)')
->select();

Thinkphp6的用法二 (使用模型):

Order::alias('a')->whereRaw('('.GoodsEvaluate::alias('f')->whereRaw('f.order_id = a.order_id')->fetchSql(true)->count().') = 0')->select();

同样我们使用这种方法也可以在查询的数据做计算例如   主表的 virtual_sale与sale相加计算  并命名为 sale,并查询副表的sale_price命名为price

$result = self::alias('a')
        	->where('id',$id)
                ->field('a.*,
            (a.virtual_sale+a.sale) as sale,
            ('.GoodsSpecModel::alias('b')
                    ->whereRaw('b.goods_id = a.id && b.delete_time is null')
                    ->order('id')
                    ->fetchSql(true)
                    ->value('sale_price').'
            ) as price')->find();

 

一样的方法我们也可以灵活使用在order等TP方法中

例如 

$result = self::alias('a')
        	->where('id',$id)
            ->field('
            a.*,
            ('.GoodsSpecModel::alias('b')
                    ->whereRaw('b.goods_id = a.id && b.delete_time is null')
                    ->fetchSql(true)
                    ->value('price').'
            ) as price')->order('price desc')->select();

  



阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: phpmysql