Tp5 left join 带条件 数据不返回

2023-11-17

背景:
下面两种方式都是在查询吸毒人员的基本信息,pa_account 表示该吸毒人员的评估小组,一般情况下,录入吸毒人员基础信息都会录入其关联的评估小组,但是部分也不录入。理论上,无论评估小组有没有录入,left join 都要返回左表addicts数据的,但是若没有录入评估小组,第一种查询方式就不会返回数据。
直接上代码

第一种查询方式:

$map['a.uid']=$uid;
$map['b.paid']=0; 
$addicts = db('addicts')
->alias('a')
->join('pa_account b','b.aid = a.aid','left') 
->where($map)
->field('a.*,b.account_name s_name')
->find();

第二种查询方式

$map['a.uid']=$uid;
$addicts = db('addicts')
->alias('a')
->join('pa_account b','b.aid = a.aid and b.paid=0','left') 
->where($map)
->field('a.*,b.account_name s_name')
->find();

分析:
可以看到,left join 的表是带一个默认的条件的,就是 b.paid = 0;,如果把这个条件直接写到map里面去查询,当 pa_account 不存在对应数据时,整个查询就会返回空。所以当 left join 的表如果带默认条件时,正确的写法应该是第二种。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tp5 left join 带条件 数据不返回 的相关文章

随机推荐

  • Gossip协议

    Gossip协议 一 Gossip协议 1 1 工作原理 1 2 Gossip优点 1 3 Gossip传播方式 1 3 1 Anti Entropy 反熵 1 3 2 Rumor Mongering 谣言传播 1 3 3 结合 1 4 G
  • 初识C语言(二)

    目录 五 字符串 六 转义字符 七 注释 7 1注释的类型 7 1 1单行注释 7 1 2多行注释 7 2注释的使用方法 7 2 1解释代码功能注释 7 2 2提供代码示例注释 7 2 3禁用或屏蔽代码 八 选择语句 8 1if语句 8 1
  • 利用python3自动在36kr里查找自己感兴趣的内容

    最近常常在36kr网站的快讯及资讯 最新里查看自己感兴趣内容的及时信息 由于快讯及资讯 最新里信息更新得比较及时快速 自己也很难一直盯着看 故想着要是写个脚本让其自动在后天挂着每隔5分钟查询一次 有的话就写入txt档中并在控制台打印出来 这
  • 小孩学创客编程好还是学机器人好

    小孩学创客编程好还是学机器人好 小孩的学习一直都是很多家长们非常关心和重视的一件事情 很多的家长在培养孩子的学习的时候 可以说是十分的用心的 会给孩子选择一些能够有利于孩子成长的课程 就拿现在很多的家长想要孩子去学习机器人编程的课程来说 有
  • 域环境的搭建的详细教程-220109

    参考链接 https mp weixin qq com s src 11 timestamp 1641696209 ver 3547 signature zTIDZEcpq zjwuEuZpbaaAxFfkkVxcLHeX4AuKT78bJ
  • 第九届蓝桥杯 2018年省赛真题 (Java 大学C组 )

    蓝桥杯 2018年省赛真题 Java 大学C组 第一题 哪天返回 第二题 猴子分香蕉 第三题 字母阵列 第四题 第几个幸运数 第五题 书号验证 第六题 打印大X 第七题 缩位求和 第八题 等腰三角形 第九题 小朋友崇拜圈 第十题 耐摔指数
  • RHCE——DNS的正反向解析

    一 实验要求 DNS配置正反向解析 二 实验过程 1 安装软件包 root localhost ll yum install bind y 2 备份bind软件的的配置文件 root localhost yum repos d cp a e
  • CMAKE学习——编译多个文件 & 多个目录

    大型工程会有很多文件 包括类的实现和定义 各种不同的模块交叉在一起 我们怎么用cmake方便的编译呢 例如有这么一个工程 我们现在想要编译的话 如果只选择了main cpp 则会提示 未定义的引用 因为我们头文件和实现分离 但我们只包含了头
  • 【云原生之Docker实战】使用Docker部署jenkins持续集成工具

    云原生之Docker实战 使用Docker部署jenkins持续集成工具 一 jenkins介绍 1 jenkins简介 2 jenkins功能 3 jenkins基本工作图 二 检查本地系统版本 三 检查本地docker状态 1 检查do
  • IDEA运行报错:类文件具有错误的版本 55.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径子目录中。

    IDEA运行报错 类文件具有错误的版本 55 0 应为 52 0 请删除该文件或确保该文件位于正确的类路径子目录中 如果搜索资料 会看到minor major版本 但其实不叫这个名字 Sun公司会在大的版本升级时增加major数字 小更新或
  • 【python】自动化测试框架--nose

    目录 一 准备 二 nose介绍 三 看个简单的例子了解下 三 nose常用命令简单介绍 1 查看所有nose相关命令 2 执行并捕获输出 3 提供XUnit XML 格式的测试结果 并存储在nosetests xml文件中 主要为jenk
  • 程序员的自我修养--链接、装载与库

    中国科学技术大学软件学院 周艾亭 原创作品版权所有转载请注明出处 第一次接触 程序员的自我修养 的时候 的确怀有一种疑惑的态度的 因为潜意识告诉我 在计算机这一行 更强调的是实践动手 而XXX修养的显然不属于动手操作类 至少不是太适合我的需
  • 数据同步方案

    mysql 数据同步到elastic中 本文中不提及实现 仅提供方案 增量数据同步 方案一 通过logstash 官方提供的工具 快速实现数据同步 值得注意的是选择logstash时需要和elastic的版本做对应 由于elastic 版本
  • 多线程经典案例(生产者--消费者)

    多线程开发中有一个经典的操作案例 就是 生产者 消费者 案例 生产者不的生产产品 消费者不断地取走产品 此案例涉及线程同步 线程休眠 线程等待 线程唤起等操作以及之间是如何搭配使用的方法 示例讲解 本示例模拟中生产者由 厨师 担任 消费者由
  • 如何利用 Selenium 对已打开的浏览器进行爬虫

    大家好 在对某些网站进行爬虫时 如果该网站做了限制 必须完成登录才能展示数据 而且只能通过短信验证码才能登录 这时候 我们可以通过一个已经开启的浏览器完成登录 然后利用程序继续操作这个浏览器 即可以完成数据的爬取了 具体操作步骤如下 1 1
  • QT循环队列实时处理数据(二)

    上一篇多线程介绍的是 QT多线程处理机制 这篇 将对接收数据 实时处理进行分析 QT通过socket通信 从接收缓冲区中读取数据 交给线程进行处理 那么问题来了 如果线程还没有处理完数据 则线程就没有办法继续从缓冲区中取数 那么当数据量过大
  • vue父子组件之间的传值(子传父,父传子)

    vue父子组件之间的传值 子传父 父传子 前提首先需要了解vue中组件之间的父子关系 主组件mainPage vue
  • 个性化定制界面和极简版原装界面,哪一个你用起来更加顺手呢

    个性化定制界面是根据用户的需求和喜好进行定制的 具有很高的灵活性和可定制性 用户可以自由选择界面的颜色 布局 字体等 以及添加或删除特定功能 这种界面能够根据用户的个人喜好和习惯进行定制 使得用户在使用过程中更加舒适和顺手 以下是一些可能的
  • 【数据结构】&&【C++】平衡搜索二叉树的模拟实现(AVL树)

    数据结构 C 平衡搜索二叉树的模拟实现 AVL树 一 AVL树的性质 二 AVL树的模拟实现 AVL树结点的定义 AVL树的插入 平衡因子的更新 左单旋 右单旋 双旋 左右旋 右左旋 AVL树的删除 检查是否是AVL树 三 完整代码 一 A
  • Tp5 left join 带条件 数据不返回

    背景 下面两种方式都是在查询吸毒人员的基本信息 pa account 表示该吸毒人员的评估小组 一般情况下 录入吸毒人员基础信息都会录入其关联的评估小组 但是部分也不录入 理论上 无论评估小组有没有录入 left join 都要返回左表ad