选择 count(*) 并“连接”3 个表

2024-03-27

我正在寻找 3 个表的联接内的计数查询,它可以让我对其中一个表的不同值进行计数。

我有 3 个表,需要连接它们才能获取预期数据(Workflow, Message and Message_Workflow_Relation).

我想获取按状态+已连接的一个字段分组的工作流程数Message我的结果中的表(related_name)。相关名称应取自以下条目:adapter字段等于wf,但是有时有多个消息记录符合此条件,这将导致我计数的数据集比实际存在的数据集多。

我很确定一定可以解决这个问题,但就是不让它发挥作用。 遗憾的是,我无法更改表结构,因为它是我们使用的产品的给定架构。

我的表结构如下所示:

工作流程:

id | workflow_id | starttime | endtime | status
------------------------------------------------------
1  |          22 |         0 |     200 |     OK
2  |          23 |       220 |     920 |  ERROR
3  |          55 |       202 |     588 |     OK

消息_工作流程_关系:

id | message_id | workflow_id |
-------------------------------
1  |        122 |          22 |
2  |        235 |          22 |
3  |        456 |          22 |
4  |        982 |          22 |
5  |        444 |          23 |
6  |        445 |          23 |
7  |        585 |          55 |
8  |        738 |          55 |
9  |        399 |          55 |

Message:

id | message_id | starttime | endtime | adapter | related_name |
----------------------------------------------------------------
 1 |        122 |         0 |    2335 |      wf |   workflow_1 |
 2 |        235 |       222 |    1000 |   other |        other |
 3 |        456 |       343 |    2330 | another |      another |
 4 |        982 |       222 |    2200 |      wf |   workflow_1 |
 5 |        444 |      2223 |    3333 |      wf |   workflow_2 |
 6 |        445 |      1123 |    1244 |  manual |       manual |
 7 |        585 |      5555 |    5566 |      wf |   workflow_1 |
 8 |        738 |       655 |     999 |      wf |   worfklow_1 |
 9 |        399 |      6655 |    7732 | another |      another |

这应该返回以下结果:

count(*) | related_name | status |
----------------------------------
       2 |   workflow_1 |     OK |
       1 |   workflow_2 |  ERROR |

我被以下陈述所困扰,但我不知道如何 进行选择adapter = wf unique对于每个工作流程:

select distinct
  count(*),
  m.related_name,
  w.status
from
  workflow as w,
  message as m,
  msg_bpm_rel as rel
where rel.workflow_id = w.workflow_id
  and rel.message_id = m.message_id
  and m.adapter = 'PE'
group by m.related_name,w.status

这让我返回(4workflow_1而不是 2):

count(*) | related_name | status |
----------------------------------
       4 |   workflow_1 |     OK |
       1 |   workflow_2 |  ERROR |

我怎样才能做出正确的查询来实现这一目标?

任何帮助表示赞赏。


您可以通过对不同值进行分组和计数来实现此目的。

所以像这样:

select count(distinct w.workflow_id), m.related_name,w.status 
from workflow as w, message as m, msg_bpm_rel as rel 
where rel.workflow_id = w.workflow_id and rel.message_id = m.message_id 
and m.adapter = 'PE' 
group by m.related_name, w.status

这是未经测试的,但我相信应该可以工作:)

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

选择 count(*) 并“连接”3 个表 的相关文章

  • H2数据库,通过从CSVREAD选择结果插入

    我有一个 CSV 文件 例如 1 hello 13 2 world 14 3 ciao 26 我正在尝试使用CSVREAD函数将该文件读入数据库 如下所示 insert into my table id message code value
  • 以多列显示数据

    您好 我需要从 mySQL 表构建一个包含四列的表 这是我现在拥有的
  • 将一个表的所有行复制到另一个表

    我有两个数据库MySQL and SQL Server 我想在其中创建表SQL Server并复制表中的所有行MySQL到新表中SQL Server 我可以在中创建表SQL Server与 一样MySQL 使用以下代码 List
  • sql查询使用pivot动态添加会计月份

    ALTER PROCEDURE dbo sp GetDMActivityTrackerReport CoachId VARCHAR 7 Month INT FiscalYear INT AS BEGIN INSERT FiscalMonth
  • 按“计数(列不为空)”排序

    我正在寻找一种方法 通过值不为空的列的计数来对 MySQL 结果进行排序 所以 id 1 1 0 1 1 4 id 0 1 1 1 0 3 id 0 0 0 1 1 2 id 1 0 0 0 0 1 在上面的例子中 我忽略了 ID 列 但实
  • 如何将H2数据库文件存储到项目目录中

    当我使用H2数据库时 数据库文件存储在C Users MyName TestDataBase db目录 H2路径是jdbc h2 TestDataBase 这是默认的 H2 数据库路径 是否有可能像这样将 H2 数据库文件存储到我的项目目录
  • 增加 SQL 命令的命令超时

    我有一个小问题 希望有人能给我一些建议 我正在运行一个 SQL 命令 但由于数据量很大 该命令似乎需要大约 2 分钟才能返回数据 但默认的连接时间是 30 秒 我如何增加这个时间 并将其应用到这个命令 public static DataT
  • SQL 中的模糊分组

    我需要修改 SQL 表以对稍微不匹配的名称进行分组 并为组中的所有元素分配标准化名称 例如 如果初始表如下所示 Name Jon Q John Q Jonn Q Mary W Marie W Matt H 我想创建一个新表或向现有表添加一个
  • 按 ID 合并两个不均匀的数据框并填充缺失值

    我是 r 新手 这是我的第一个论坛问题 我正在尝试合并两个数据集 如下所示 df1 lt data frame ID letters 1 5 x 5 9 y c NA 6 5 NA NA gt df1 ID x y 1 a 5 NA 2 b
  • R 中的 sqlSave 创建数据帧并将其保存到 SQL 表

    您好 我正在使用 R 将数据框保存到 DB2 SQL 表中 我似乎能够创建表骨架 但无法将数据附加到表中 gt df lt read csv dat csv 其中 dat csv 是没有标题的 csv 只有两列中的原始数据 然后我创建表 g
  • Postgres 在插入访问 NEW 后触发

    我有一个非常简单的触发器 CREATE OR REPLACE FUNCTION f log datei RETURNS TRIGGER AS BEGIN INSERT INTO logs aktion tabelle benutzer id
  • 如何使用 ORACLE SQL 从 XML 中单独提取可重复的 json 节点值?

    我有以下 XML 我想提取 json 参数 serviceNumber 的值分别地我尝试使用 EXTRACT 函数 但我得到了连接的结果 但我希望将它们分开
  • MS Access 2007 中 NVL 功能的替代方法是什么

    我在 MS Access 中编写了一个 SQL 查询 select NVL count re rule status 0 from validation result re validation rules ru where re cycl
  • 确定用winsock(FIONWRITE)可以发送多少字节?

    通过 select 我可以确定是否可以在不阻塞的情况下接收或发送任何字节 通过这个函数 我可以确定可以接收多少字节 function BytesAvailable S TSocket Integer begin if ioctlsocket
  • 在SSIS中导入已合并单元格的Excel

    我的问题是在读取合并 组合列单元格的 Excel 文件时 例如 将下面的excel数据读取到数据库中 Excel 输入 ID NAME DEPT FNAME LNAME 1 Akil Tiwari IT 2 Vinod Rathore IT
  • mysql非空字段计数

    我想计算 mysql 中特定字段集有多少字段为空 我找到了一些示例 但它们都遍历整个表 基本上我有8个字段 listing photo 1 到listing photo 8 我想知道其中有多少个被填充 I tried result mysq
  • 课程完成时更新外部数据库

    我的场景 Moodle 中的用户完成了一门课程 一旦发生这种情况 我想更新外部数据库 我的理解是 每次运行 cron 作业时都会触发 course completed 事件 使用一些简单值 例如已完成课程的用户名 ID 课程 ID 以及完成
  • 为什么sql表名中通常使用下划线而不是驼峰式大小写[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 是否需要显式事务回滚?

    许多例子都主张显式回滚数据库事务 大致如下 using var transaction try do some reading and or writing here transaction Commit catch SqlExceptio
  • 帮助加入 Rails 3

    我有以下型号 class Event lt ActiveRecord Base has many action items end class ActionItem lt ActiveRecord Base belongs to event

随机推荐

  • 如何连接到docker Oracle实例

    我正在关注这些指示 https github com oracle docker images tree master OracleDatabase 我创建了一个像这样的 docker 容器 docker run name oracle p
  • 删除旧的 .PhpStorm 目录是否安全

    每次我将 PhpStorm 升级到新的单点版本时 我的主目录中都会保留以前的版本 我现在有 PhpStorm2017 1 PhpStorm2017 2 PhpStorm2017 3 PhpStorm2018 1 PhpStorm2018 2
  • 如何在 Android Studio 中编辑 .jar 文件

    如何使用 Android Studio 编辑 jar 文件中的 class 文件中的代码 当然 我已经尝试过编辑它 由于某种原因 我试图编辑的类是只读的 Jar文件是压缩档案 zipped files class文件 以及一些其他资源 cl
  • 学习 C# Excel 互操作的资源 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有哪些资源可以帮助我快速启动并运行 C 中的 Excel 互操作 文章从 Visual Studio 2005 开发人员的角度理解 Exc
  • 使用 scipy 中的 optimization.minimize 和 2 个变量和插值函数

    我没有找到使用多维函数从 scipy 执行 optimize minimize 的方法 在几乎所有示例中 解析函数都得到优化 而我的函数则被插值 测试数据集如下所示 x np array 2000 2500 3000 3500 y np a
  • Spark fat jar 在 YARN 上运行多个版本

    我有一个旧版本的 Spark 设置和 YARN 我不想删除它 但仍然想使用较新的版本 我找到了一个couple https community cloudera com t5 Advanced Analytics Apache Spark
  • 窗口对象中奇怪的 self 对象

    我不明白为什么window在下面self and self在下面window目的 如果你去开发工具或 Firebug 并写window你得到了DOM window反对self位于该对象下 奇怪的部分是window在下面self again
  • 在Vue js中显示错误消息

    我有一个以下组件 其中有一个更新员工的方法 我想在 ajax 调用的 错误 回调中分配 更改 erroMessage 变量后立即在视图中显示错误消息 var EmployeeEdit Vue extend template employee
  • 如何在android中创建选项菜单?

    我想使用 c 和 Xamarin Studio 在 Android 应用程序中创建一个简单的选项菜单 我该怎么做 我还没有找到任何这方面的 C 示例 有人可以简单解释一下如何创建选项菜单吗 定义菜单 创建菜单的一种方法是使用放置在 Xama
  • Maven编译器使用的JDK版本在哪里指定?

    当我没有在我的 pom xml 文件中定义如下内容时 在我的系统上的哪个位置为 Maven 定义了编译时使用哪个版本的 Java JDK 我的系统上安装了多个版本 JAVA HOME指向其中之一
  • 使用 SQL Server 2012 恢复多个数据库的最佳脚本?

    我必须恢复大约 60 个不同大小的 SQL 数据库 我在谷歌上搜索找到一个脚本来依次恢复所有数据库 只需从我的文件夹中一一挑选它 我没有那么成功 可能是因为我对 SQL 等还很陌生 它可以在 powershell 或 sql 命令行中完成
  • 无法使用处理程序解决 CalledFromWrongThreadException

    我会尽量保持简单 在我的主要活动中 我创建了一个处理程序 public class ARViewer extends ARDisplayActivity public final MHandler mHandler new MHandler
  • Linux 发行版二进制兼容性

    有没有办法在 Linux 发行版中制作二进制文件并在具有相同架构的另一个发行版上运行它 或者我应该在不同的发行版上编译和构建它 基于 Redhat Debian 的二进制文件发行版之间是否存在兼容性 我想在 fedora 上使用我的 Ubu
  • 尝试打开工作簿时的 VBA 错误处理

    我试图循环浏览文件夹中的所有文件 打开它们并删除文档信息 我在处理无法打开的文件或打开时出现有关禁用宏的弹出消息时遇到问题 我尝试使用错误恢复下一步和错误转到 0 来解决此问题 但随后我遇到运行时失败 因为当我尝试关闭已打开的文件时 我的工
  • 管理多个 AWS 账户凭证的推荐方法?

    通过以下方式管理多个 Amazon Web Services AWS 账户的最佳方式是什么boto 我熟悉博托配置 http docs pythonboto org en latest boto config tut html文件 我正在使
  • Eclipse 使用 jboss 进行远程调试

    如何在 JBOSS 服务器 4 x 版本的 Eclipse 中配置远程调试 So far Step1 我修改了run config文件 通过取消注释以下行 用于远程套接字调试的示例 JPDA 设置 JAVA OPTS JAVA OPTS X
  • 系统更新IMG的src。内存泄漏

    系统更新IMG的src 内存泄漏 我目前每 x 秒更新一张图像 我想到的几种方法如下 拿一个 var url ImageID attr src url 现在这个作品完美地改变了形象but导致内存泄漏 取二 所以它正在创建 DOM 元素 所以
  • 相当于 JMockIt 中的 times() 吗?

    我不认为 minInspiration 或 maxInspiration 等同于 Mockito 中的 times 有没有 请看这个问题 Mockito 和 JMockIt 之间的主要区别 https stackoverflow com q
  • 如何在 Artifactory 中触发 Jenkins 在新工件上构建?

    Artifactory 可以用作 Jenkins 中的 SCM 或源来触发特定工件部署上的构建吗 在 Artifactory Jenkins 插件中没有看到 或错过 任何类似的内容描述 https www jfrog com conflue
  • 选择 count(*) 并“连接”3 个表

    我正在寻找 3 个表的联接内的计数查询 它可以让我对其中一个表的不同值进行计数 我有 3 个表 需要连接它们才能获取预期数据 Workflow Message and Message Workflow Relation 我想获取按状态 已连