iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >thinkphp:数据库查询二,嵌套别的表的查询(别的表做子查询)
  • 432
分享到

thinkphp:数据库查询二,嵌套别的表的查询(别的表做子查询)

数据库sqlphp 2023-09-13 16:09:02 432人浏览 安东尼
摘要

 例子 从 vendors 表中选择记录。在 vendors 表中,筛选出具有满足以下条件的 vendor_code 值: 对应的采购订单(在 po_headers_all 表中)存在未完全接收的采购行(在 po_lines_all 表

 例子

  1. 从 vendors 表中选择记录。
  2. 在 vendors 表中,筛选出具有满足以下条件的 vendor_code 值:
    • 对应的采购订单(在 po_headers_all 表中)存在未完全接收的采购行(在 po_lines_all 表中)。
    • 相应的采购订单状态为 "已签核"。
    • 采购行的数量大于已接收数量。
  3. 查询结果按照 vendor_code 字段降序排列,并限制返回的结果集的起始位置和数量。

代码

$data['all_info'] = Db::table('vendors')    ->alias('d')     ->whereExists(function ($query) {        $query->table('po_headers_all')            ->alias('a')            ->join(['po_lines_all'=>'b'], 'a.po_num = b.po_num')            ->where('b.quantity', '>', Db::raw('b.quantity_received'))            ->where('a.status', '已签核')            ->where('a.vendor_code = d.vendor_code');    })    ->order('vendor_code', 'desc')    ->limit($start,$pageSize)    ->select();

逐句解析 

  • $data['all_info'] = Db::table('vendors'): 创建了一个变量 $data['all_info'],用于存储查询结果。使用 Db::table('vendors') 指定了要查询的数据表为 "vendors"。

  • ->alias('d'): 使用别名 "d" 来表示数据表 "vendors"。

  • ->whereExists(function ($query) { ... }): 使用 whereExists 方法来指定一个子查询。子查询中的条件将用来检查是否存在满足条件的记录。

  • $query->table('po_headers_all')->alias('a'): 在子查询中,指定要查询的数据表为 "po_headers_all",并使用别名 "a" 来表示该表。

  • ->join(['po_lines_all'=>'b'], 'a.po_num = b.po_num'): 将数据表 "po_headers_all" 与 "po_lines_all" 进行连接,连接条件是 "a.po_num = b.po_num"。

  • ->where('b.quantity', '>', Db::raw('b.quantity_received')): 在连接后的数据表中,添加条件 "b.quantity > b.quantity_received"。这个条件用来筛选数量未完全接收的记录。

  • ->where('a.status', '已签核'): 添加条件 "a.status = '已签核'",用来筛选状态为 "已签核" 的记录。

  • ->where('a.vendor_code = d.vendor_code'): 添加条件 "a.vendor_code = d.vendor_code",将子查询中的 vendor_code 与主查询中的 vendor_code 进行比较,以确保查询结果中的记录是符合条件的。

  • ->order('vendor_code', 'desc'): 根据 vendor_code 字段降序排序查询结果。

  • ->limit($start, $pageSize): 指定查询结果的分页限制,从 $start 开始,取 $pageSize 条记录。

  • ->select(): 执行查询操作,获取符合条件的记录,并将结果返回给变量 $data['all_info']

 查询总数量同理(注:去掉了限制条件)

$data['total'] = Db::table('vendors')    ->alias('d')    ->whereExists(function ($query) {        $query->table('po_headers_all')            ->alias('a')            ->join(['po_lines_all'=>'b'], 'a.po_num = b.po_num')            ->where('b.quantity', '>', Db::raw('b.quantity_received'))            ->where('a.status', '已签核')            ->where('a.vendor_code = d.vendor_code');    })    ->count();

来源地址:https://blog.csdn.net/weixin_46001736/article/details/132664841

--结束END--

本文标题: thinkphp:数据库查询二,嵌套别的表的查询(别的表做子查询)

本文链接: https://www.lsjlt.com/news/406137.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • thinkphp:数据库查询二,嵌套别的表的查询(别的表做子查询)
     例子 从 vendors 表中选择记录。在 vendors 表中,筛选出具有满足以下条件的 vendor_code 值: 对应的采购订单(在 po_headers_all 表中)存在未完全接收的采购行(在 po_lines_all 表...
    99+
    2023-09-13
    数据库 sql php
  • 怎么理解Oracle数据库中的多表查询,分组查询,子查询
    本篇内容介绍了“怎么理解Oracle数据库中的多表查询,分组查询,子查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能...
    99+
    2022-10-18
  • Mysql数据库理论基础之五--SELECT单多表查询、子查询、别名
    一、简介由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点:1、是一种数据库管理系统2、是一种关联数据库管理系统3、是一种开放源码软件,且有大量可用的共享MySQL软件4、MySQ...
    99+
    2022-10-18
  • Mysql DOS:数据库的创建,选定,查询,表格的查询,参数查询,表格销毁。
    1.创建数据库:格式:create database 库名;create database mrsoft;2.使用某数据:格式:use 库名;use mrsoft;3.显示当前...
    99+
    2022-10-18
  • mybatis嵌套查询和嵌套结果的区别是什么
    本篇内容介绍了“mybatis嵌套查询和嵌套结果的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!mybatis嵌套查询和嵌套结果有...
    99+
    2023-07-05
  • Thinkphp 6.0数据库的数据查询
    本节课我们来了解一下数据库的数据查询方式,单数据、数据集和其它查询。 一.单数据查询 1. Db::table()中 table 必须指定完整数据表(包括前缀); 2. 如果希望只查询一条数据,可以使用 find()方法,需指定 wh...
    99+
    2023-08-31
    php Powered by 金山文档
  • 数据库的单表查询操作
    数据库的单表查询操作?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。单表查询指的是在一张表中进行数据的查询,它的执行顺序是“fr...
    99+
    2022-10-18
  • MySQL数据库中的多表查询
    这期内容当中小编将会给大家带来有关MySQL数据库中的多表查询,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。多表查询查询结果来自于多张表,即多表查询子查询:在SQL语句嵌套着查询语句,...
    99+
    2022-10-18
  • MySQL笔记——表的分组查询、表的分页查询、表的约束、数据库设计
    系列文章目录 MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明 MySQL笔记——表的修改查询相关的命令操作 MySQL案例——多表查询以及嵌套查...
    99+
    2023-10-04
    数据库 mysql 笔记 centos
  • 解读数据库的嵌套查询的性能问题
    目录解读数据库的嵌套查询的性能1、嵌套查询2、join查询3、解决方法问题:数据库内部嵌套关系实现模型问题思路总结解读数据库的嵌套查询的性能 explain 是非常重要的性能查询的工具!!! 1、嵌套查询 首先大家都知道...
    99+
    2023-03-15
    数据库嵌套查询 数据库嵌套查询的性能 嵌套查询性能
  • mybatis 集合嵌套查询和集合嵌套结果的区别说明
    目录集合嵌套查询和集合嵌套结果的区别1.创建2张表,建立主外键关系2.建立实体类3.修改配置文件4.建立映射文件5.创建测试类MyBatis 嵌套查询解析对应的JavaBean对应的...
    99+
    2022-11-12
  • mysql如何查询数据库里的表
    要在MySQL中查询数据库里的所有表,你可以使用 SHOW TABLES 命令。 下面是步骤说明: 登录MySQL: 使用命令行工具登录到MySQL数据库。例如: mysql -u [用户名] -p...
    99+
    2023-10-23
    mysql 数据库
  • MySQL数据库单表查询的示例
    这篇文章主要介绍MySQL数据库单表查询的示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、 简单查询1.     Select语句Select [...
    99+
    2022-10-18
  • mysql数据库表的多条件查询
    mysql数据库表的多条件查询 一、select语句基本查询 SELECT 字段1,字段2....FROM 表名[WHERE 条件] [LIMIT N][ OFFSET M] select可以返回多条数据也可以返回一条数据...
    99+
    2023-08-22
    数据库 mysql sql
  • MySQL数据库中多表查询之内连接,外连接,子查询的示例分析
    小编给大家分享一下MySQL数据库中多表查询之内连接,外连接,子查询的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!多表...
    99+
    2022-10-18
  • MySQL数据库:子查询的应用
    子查询 子查询是一种常用计算机语言SELECT-SQL语言中嵌套查询下层的程序模块。当一个查询是另一个查询的条件时,称之为子查询。 # 子查询的用法 # 在字段 select (select cName from courses w...
    99+
    2018-04-26
    MySQL数据库:子查询的应用
  • 数据库查询优化之子查询优化的示例分析
    这篇文章将为大家详细讲解有关数据库查询优化之子查询优化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 案例取所有不为掌门人的员工,按年龄分组!selec&#...
    99+
    2022-10-18
  • 数据库查询锁表以及解锁表的sql
    之前程序运行的时候,突然发生页面卡死,后台不报错的现象,经过排查是数据库表被锁死,下面的sql是查询被锁的表,以及对应的解锁sql;select b.owner,b.object_name,a.s...
    99+
    2022-10-18
  • mysql怎么查询数据库中的表名
    本篇内容介绍了“mysql怎么查询数据库中的表名”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!查询数据库中...
    99+
    2023-01-30
    mysql 数据库
  • 查询数据库中表的创建时间
    1、查询MySQL表的创建时间 -- 查询MySQL数据库表的信息 TABLE_SCHEMA:数据库名,table_name:表名SELECT table_name,create_time FROM information_sche...
    99+
    2023-09-30
    数据库 sql mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作