数据库 表A和表B匹配,但仅输出表A数据的长度

需求大致如上:

假如有两张表,表order和表item
其中表order可以匹配多条表item的数据
但是表item的数据里有些数据的价格的有些为零有些不为零
现在需要输出order数据中有item的价格为0的数据

我用的是thinkphp3 代码如下:

    $res=D('youzan_order')->alias('a')
    ->field('a.tid')
    ->join("cel_youzan_order_item b on a.tid=b.youzan_tid",'LEFT')
    ->where("a.tid='E20180608105403003500005' and b.points_price='0'")->select();
    

结果如下:

clipboard.png

我只想要返回符合条件的order数据,不需要连item的数量也加进去

求大佬解答,谢谢

阅读 1.6k
1 个回答

你这是一对多的关系,JOIN 之后肯定是有多条记录,如果你不关心 item 表的内容,可以加个 distinct(true) 去下重就可以了:

$res=D('youzan_order')->alias('a')
    ->distinct(true)
    ->field('a.tid')
    ->join("cel_youzan_order_item b on a.tid=b.youzan_tid",'LEFT')
    ->where("a.tid='E20180608105403003500005' and b.points_price='0'")->select();

或者用 exists 子查询,在 tp 里写起来麻烦一点。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题