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

发布于 2022-09-11 16:36:54 字数 574 浏览 11 评论 0

需求大致如上:

假如有两张表,表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的数量也加进去

求大佬解答,谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

静若繁花 2022-09-18 16:36:54

你这是一对多的关系,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 里写起来麻烦一点。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文