MySQL JOIN 与多个表和 SUMS

2024-01-18

我正在尝试创建一个查询,该查询将从我正在创建的计费系统的四个表中获取信息。我有以下表格:

表发票

InvoiceID (PK)
ClientID
Date
Status
...

桌面客户端

ClientID (PK)
ClientName
...

表发票项目

ItemID (PK)
InvoiceID
Amount
...

餐桌付款

PaymentID (PK)
InvoiceID
Amount
...

我需要创建一个查询,可以在其中访问发票表中的信息以及客户名称以及与发票关联的所有发票项目和付款的总和。

我已经尝试过以下方法:

SELECT 
    Invoice.InvoiceID, 
    Invoice.`Date`, 
    Invoice.Terms, 
    Invoice.DateDue, 
    Invoice.Status, 
    Client.ClinicName, 
    SUM(InvoiceItem.Amount), 
    SUM(Payment.PaymentAmount)
FROM Invoice
JOIN (Client, InvoiceItem, Payment) ON
    (Client.ClientID=Invoice.ClientID AND
     InvoiceItem.InvoiceID=Invoice.InvoiceID AND 
     Payment.InvoiceID=Invoice.InvoiceID)

虽然这种方法有效,但它将 SUM() 乘以用于获得总和的记录数(即,如果有两次付款 - 800,400 - 它给我 (800+400)*2 - 2400)。我猜测我使用连接的方式有些问题,老实说,我从来没有对多个表使用过连接,而且我总是使用 GROUP BY,但我似乎无法让它正常工作。

更糟糕的是,过去几年我一直迷失在vb.net/MSSQL客户端编程的世界里,所以我的MySQL相当粗糙。


您的问题是您无法在单个查询中同时聚合两个独立的表。但是您可以使用子查询来完成此操作。

SELECT Invoice.InvoiceID, Invoice.`Date`, Invoice.Terms, Invoice.DateDue, Invoice.Status, Client.ClinicName, InvoiceItemSum.SumOfAmount, PaymentSum.SumOfPaymentAmount
  FROM Invoice
  INNER JOIN Client ON Client.ClientID = Invoice.ClientID
  INNER JOIN (
    SELECT InvoiceID, SUM(Amount) AS SumOfAmount
      FROM InvoiceItem
      GROUP BY InvoiceID
  ) InvoiceItemSum ON InvoiceItemSum.InvoiceID = Invoice.InvoiceID
  INNER JOIN (
    SELECT InvoiceID, SUM(PaymentAmount) AS SumOfPaymentAmount
    FROM Payment
    GROUP BY InvoiceID
  ) PaymentSum ON PaymentSum.InvoiceID = Invoice.InvoiceID
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL JOIN 与多个表和 SUMS 的相关文章

  • SQL Join 列上类似于另一列[重复]

    这个问题在这里已经有答案了 可能的重复 mysql连接查询使用like https stackoverflow com questions 1930809 mysql join query using like 我想要进行连接 其中一列包含
  • 为什么 PostgreSQL 不能做这个简单的 FULL JOIN 呢?

    这是包含 2 个表的最小设置a and b每行 3 行 CREATE TABLE a id SERIAL PRIMARY KEY value TEXT CREATE INDEX ON a value CREATE TABLE b id SE
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE
  • MySQL/PDO::quote() 尽管使用 PDO::PARAM_INT 参数,但仍在整数周围加上引号

    无论我传递给什么值 数据类型对 它都会出现 pdo gt quote value type 它总是将其引用为字符串 echo pdo gt quote foo PDO PARAM STR foo as expected echo pdo g
  • Mysql用in语句限制

    我正在写一个查询 SELECT user bookmarks id as user bookmark id bookmark id user bookmarks user id bookmark url bookmark website b
  • Rails HABTM 设置、模型对象和 join_table 插入控制器设置

    我有以下设置 1 个产品有多个 Product types 许多 Product types 有 1 种类型 根据我对文档的理解 HABTM 关系 我的模型是 class Product lt ApplicationRecord has a
  • posts_search 中的自定义查询

    如何使用此查询作为我的自定义搜索查询 add filter posts search my search is perfect 20 2 function my search is perfect search wp query sWord
  • SQL查询查找表的主键?

    我怎样才能找到哪一列首要的关键使用查询来创建表 这是重复的question https stackoverflow com questions 893874 mysql determine tables primary key dynami
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • 在 android 中建立与 MySQL 的池连接

    我需要从我的 Android 应用程序访问 MySQL 数据库 现在所有的工作都通过 DriverManager getConnection url 等等 但我必须从多个线程访问数据库 所以我必须使用连接池 问题1 是 com mysql
  • mysql排序和排名语句

    我需要一些 mysql 语句的帮助 我的表 1 有 7 列 表 2 有 8 列 额外的列名为排名 我的语句应该是这样的 从表 1 中选择全部 然后按 用户数 排序 将其插入表 2 中并排名开始 1 2 3 等 table 1 usernam
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • 基于mysql表中唯一电子邮件地址的唯一代码?

    我有一个 mysql 表 它将存储用户电子邮件地址 每个地址都是唯一的 并且是主字段 和时间戳 我添加了另一列名为 unique code varchar 64 utf8 unicode ci 我非常感谢您提供的帮助 a 生成5位字母数字代
  • MySQL 与 PostgreSQL JSON 搜索功能

    我一直在寻找一篇博客文章或一个功能矩阵 通过 JSON 功能对 MySQL 和 PostgreSQL 进行比较 我找到了一个好的Postgres 的特征矩阵 https www postgresql org about featuremat
  • WHERE 值不在(子查询)

    我一直在努力解决这个问题 我有两张桌子 一张带有优惠券和发票号码的 一张带有发票号码和客户姓名的 我需要找到尚未使用优惠券的顾客 以下是表格 促销表 Promotions Invoice Coupon 1 couponA 2 couponB
  • 通过sequelize.query() 插入原始查询时不会触发挂钩

    我有以下内容EmployeeMySQL 数据库模型 var bcrypt require bcrypt module exports sequelize DataTypes gt const Employee sequelize defin
  • 在 MySQL 中将值设置为 NULL

    我想要一个值被设置为NULL如果我提交的表单中的文本框中没有输入任何内容 我怎样才能做到这一点 我试过插入 NULL 但这只是添加了这个词NULL进入现场 我不确定我应该为此提供什么代码 我只是编写一个 UPDATE 查询 不要放NULL更
  • 如何使用 Connector/C++ 更新 MySQL 中的一行值

    我有一个简单的数据库 想要更新一个 int 值 我最初执行一个查询并返回一个 ResultSet sql ResultSet 对于结果集中的每个条目 我想修改表的一个特定列中的值 然后将其写回到数据库 更新该行中的该条目 根据文档 我不清楚
  • “完整性约束违规:1062 重复条目” - 但没有重复行

    我正在将应用程序从本机 mysqli 调用转换为 PDO 尝试将行插入具有外键约束的表时遇到错误 Note 这是一个简化的测试用例 不应复制 粘贴到生产环境中 InfoPHP 5 3 MySQL 5 4 首先 这是表格 CREATE TAB

随机推荐

  • 来自 java 的 libxml2

    这个问题有点相关用于 Java 中小型 简单文档的最快 XML 解析器 https stackoverflow com questions 530064 fastest xml parser for small simple documen
  • Postgres 生成_系列

    我想要的是对表格进行统计 为此我正在使用generate series 这是我正在做的事情 SELECT x month amount FROM SELECT generate series min date trunc month dat
  • 在 docker 上运行 conda 的 jupyter

    我正在使用 docker 镜像 Continumio anaconda3 并希望通过浏览器使用 conda 启动 jupyter 笔记本服务器 docker run i t p 8888 8888 continuumio anaconda3
  • 在未使用的默认成员初始值设定项中使用仍然是 odr 使用吗?

    即使任何构造函数都没有使用默认成员初始值设定项 在默认成员初始值设定项中使用仍然是 odr 使用吗 例如 这个程序是否格式错误 因为g a 是否使用了 odr 因此其定义被隐式实例化 template a
  • 加密 SQL 数据库中的密码列

    我的数据库名称密码中有一列 我只想在发布到数据库之前对密码进行哈希或加密 我的 php 提交文件中有这样的代码
  • 在 Python 中处理字符串中的转义序列

    有时 当我从文件或用户获取输入时 我会得到一个带有转义序列的字符串 我想处理转义序列与 Python 处理字符串文字中的转义序列的方式相同 https docs python org 3 reference lexical analysis
  • 在 jQuery 中创建新的(永久)CSS 样式

    我想创建一种新样式 而不仅仅是更改元素的样式属性 下面是一些示例代码来演示该问题 Create 1st element var element1 div div text element1 addClass blue body append
  • ASP.NET c# 修复函数库内自定义ConfirmMessagebox 的 OK 事件

    我们创建了一个从 C 通过 javascript 动态显示模态弹出消息的函数 它工作正常 但我们想添加一个参数 以便我们可以传递一个函数委托 或事件处理程序 如果用户按下 确定 按钮 该函数将被调用 有什么建议么 Postdata 我们不需
  • 函数调用之外的星号

    我正在尝试 python 我有一个关于星号的问题 我知道它们用于函数调用中的参数 但我见过在函数卡之外使用它们的代码片段 例如 在 5 个等级的元组中 将它们解压到变量中 例如 first middle last grades 每当我尝试在
  • Chart.js stepSize 不适用于 min

    StepSize 不考虑 min 包括小提琴 https jsfiddle net 4p93aew7 10 https jsfiddle net 4p93aew7 10 var options type line data labels R
  • 在 CSS 中为 div 使用多个 ID

    我的网站上有 3 个 DIV 元素和这个 CSS box left box middle box right a text decoration none color 000000 它似乎只致力于 box right虽然元素 有任何想法吗
  • 将动态内容放入 mail() $message 中

    我只是想整理一封简单的 HTML 电子邮件 以确认我的数据库的订单 我的 message 看起来有点像 message etc etc 我想要在 message HTML 中执行的操作是调用我的数据库 该数据库将返回类似以下内容的行 ema
  • 使用 Facelets 标记文件时出现 FileNotFoundException

    我正在尝试运行 Core JavaServer Faces 书中的示例 ch05 http horstmann com corejsf http horstmann com corejsf 登录后我收到以下消息 sections plane
  • 实现 std::basic_streambuf 子类来操作输入

    我有一个std basic streambuf导致所有输出都以大写形式写入的子类 如下所示 class upper streambuf public std streambuf public upper streambuf std stre
  • 如何从相机拍摄的照片制作缩略图?

    在我的应用程序中 我使用外部相机应用程序来制作照片并将其保存到 SD 卡 我需要这张照片的方形缩略图 我已经设法将相机发送回的缩略图裁剪成正方形 但由于我将照片保存到磁盘 因此意图是空的 而我的旧方法使图片成为正方形Bitmap cropp
  • Spring单例bean的这种设计是线程安全的吗?

    考虑以下 Spring 服务类 spring定义的作用域是Singleton 在下面的类中自动连接为字段的两个服务 bean 具有相似的结构 它们也由以下字段之一组成 春豆本身 无状态类 不可变类 等等 该模式在应用程序设计中总体采用 Se
  • AjaxControlToolkit.CommonToolkitScripts 错误

    我在我的 ASP NET 应用程序中得到以下代码
  • 回复 Gmail 线程会向我自己发送电子邮件

    文档 https developers google com apps script reference gmail gmail message replybody options https developers google com a
  • 当顶点属性数组零被禁用时,为什么 OpenGL 绘制会失败?

    我在让我的顶点着色器在 ATI 驱动程序上的 OpenGL 3 3 核心下运行时遇到了极大的困难 version 150 uniform mat4 graph matrix view matrix proj matrix uniform b
  • MySQL JOIN 与多个表和 SUMS

    我正在尝试创建一个查询 该查询将从我正在创建的计费系统的四个表中获取信息 我有以下表格 表发票 InvoiceID PK ClientID Date Status 桌面客户端 ClientID PK ClientName 表发票项目 Ite