如何连接表中的 COUNT,然后使用另一个 JOIN 影响该 COUNT

2024-02-12

我有三张桌子

Post

ID  Name
1   'Something'
2   'Something else'
3   'One more'

Comment

ID  PostId  ProfileID  Comment
1   1       1          'Hi my name is' 
2   2       2          'I like cakes'
3   3       3          'I hate cakes'

Profile

ID  Approved
1   1          
2   0          
3   1          

我想计算评论个人资料已获批准的帖子的评论数

我可以从帖子中选择数据,然后从评论中加入计数。但此计数应取决于配置文件是否获得批准。

我期待的结果是

评论数

PostId  Count
1       1
2       0
3       1

您可以使用这样的嵌套选择:

SELECT Post.Id, temp.Count
FROM Post
LEFT JOIN
(SELECT Post.Id, COUNT(Comment.ID) AS Count
FROM Post
LEFT JOIN Comment ON Comment.PostId = Post.ID
LEFT JOIN Profile ON Profile.ID = Comment.ProfileID
WHERE Profile.Approved = 1
GROUP BY Post.Id)
temp ON temp.Id = Post.ID

如果没有帖子,而不是没有记录,这会给你 null :

1  1
2  null
3  1

为了改进这一点,您可以使用 if 来消除空值

SELECT Post.Id, if(temp.Count >= 1,temp.Count,0) as newCount
FROM Post
LEFT JOIN
(SELECT Post.Id, COUNT(Comment.ID) AS Count
FROM Post
LEFT JOIN Comment ON Comment.PostId = Post.ID
LEFT JOIN Profile ON Profile.ID = Comment.ProfileID
WHERE Profile.Approved = 1
GROUP BY Post.Id) temp ON temp.Id = Post.ID

这给了你最初想要的东西:

1  1
2  0
3  1

注意:很可能有一个更优雅的解决方案!!!!

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

如何连接表中的 COUNT,然后使用另一个 JOIN 影响该 COUNT 的相关文章

随机推荐

  • 从基本矩阵估计 T 和 R

    我创建了一个简单的测试应用程序来执行翻译 T 和旋转 R 从基本矩阵进行估计 生成 50 个随机数Points 计算投影点集1 转换Points通过矩阵 R T 计算新的投影点集2 然后计算基础矩阵F 提取必要的矩阵 如E K2 T F K
  • 在 RecyclerView 中隐藏视图

    我有这样的代码 public static class MyViewHolder extends RecyclerView ViewHolder InjectView R id text TextView label public MyVi
  • Double 到 Byte 类型转换错误

    当执行转换时byte to double通过数学运算我得到了预期的结果 执行相同的数学运算来反转值的变化 只要我保持不变 就会得到正确的值double类型 但当最后我转变时double结果返回到bytevalue 转换结果不正确 1 这只是
  • 如果 SQL Server 中另一列不存在值,则按日期季度获取行数和总和组

    我有一些样本数据 Date Status OfferNum Amount 2016 10 30 1 2000 1000 00 2016 08 25 0 2000 1100 00 2016 07 12 0 2001 1200 00 2016
  • 如何为listview设置一个简单的适配器?

    我在将 arraylist 添加到列表视图时遇到问题 将在这里解释我的问题 告诉我这里出了什么问题 我有三个线性布局 在中间布局中我有列表视图 如下面的 xml 文件所示
  • 删除 Flex 中的所有事件侦听器

    如何一次删除所有组件上的所有事件侦听器 特别是当不知道每个组件附加了哪些侦听器时 您可以重写 UIComponent 继承的 mx core FlexSprite 并生成创建的侦听器数组 Doug McCune 发布源代码here http
  • 何时使用查询参数与矩阵参数?

    查询参数 http example com apples order random color blue 矩阵参数 http example com apples order random color blue 什么时候应该使用查询参数而不
  • 如何刷新 Firebase 会话 Cookie

    我正在开发一个使用 Node js Express js 作为后端的 Web 应用程序 我使用 Firebase 进行用户身份验证 并使用 Firebase Admin SDK 管理用户注册等 当用户想要登录时 我使用 Firebase C
  • jqGrid多选,移动到下一页时复选框保留

    如果您看到 jqGrid 演示 http www trirand com blog jqgrid jqgrid html http www trirand com blog jqgrid jqgrid html 部分 高级 gt 多选 当我
  • MariaDB 数据库损坏:引擎中不存在表

    我正在环境设置中 运行 OS XMariaDB 10 0 12 MariaDB Homebrew 我搞砸了安装 所以我从我的设置中完全删除了 MySQL 和 MariaDB 然后重新开始 完成安装 MariaDB 后 我重新导入了我的数据库
  • Excel VBA HTML 嵌套查询选择器

    考虑一下 html 页面的摘录 div class BoxBody span class txt 20 Records found span p style text align right span class txt First Pre
  • Rails:simple_form 中集合所需的属性

    我们正在努力设定required以简单形式 以下设置不起作用 也尝试过 input html gt required true 但效果并不好 正确的设置方法是怎样的required以简单形式 找到了 如果您使用此命令 rails gener
  • OpenGL/glut/stdc++ 构建错误

    我正在使用 Ubuntu 并尝试使用 synaptic 安装其中包含 GLUT 一词的所有内容以及 SDL 和 opengl 但一个简单的程序仍然无法编译 它显示了这一点 opengl1 cpp text 0xe undefined ref
  • 错误:在openstack pike devstack上创建实例时未建立sql_connection参数

    我已经通过以下链接在我的 Ubuntu 16 04 上成功安装了 Openstack Devstack pike https www mirantis com blog how to install openstack on your lo
  • 使用 ssl(端口转发)在 vagrant 沙箱上访问 apache

    我构建了一个 vagrant virtualbox Web 服务器作为开发沙箱 并在 VM 中为 ssl 配置了 apache 在默认端口 443 上 具有自签名证书 我已经使用curl在虚拟机本身上测试了页面 curl v k https
  • 内置相机应用程序正确保存我的视频后出现神秘的 NullpointerException

    我有一个活动 如果您打开一个对话框并单击一个图标 就可以录制视频 问题是 在我停止录制后 即使视频已正确保存 它也会抛出 NullPointerException 根据 Log Cat 的说法 错误不在我的代码中 所以我尝试在代码中放置 检
  • 佳能图像处理 SDK 示例

    我想在 C 或 VB NET 程序中使用 canon EDSDK 来查看 cr2 文件 我找到了有关如何控制相机的示例代码 例如 https github com esskar Canon Eos Framework https githu
  • 调用操作系统打开 url?

    我可以使用什么来调用操作系统在用户默认使用的任何浏览器中打开 URL 不担心跨操作系统兼容性 如果它能在 Linux 上运行 那对我来说就足够了 以下是如何使用给定的 url 打开用户的默认浏览器 import webbrowser url
  • 将数据传递给 Axios 中的服务

    我想设置 boundry在我的标题中 首先 我发送表单数据 component js const form new FormData form append email email protected cdn cgi l email pro
  • 如何连接表中的 COUNT,然后使用另一个 JOIN 影响该 COUNT

    我有三张桌子 Post ID Name 1 Something 2 Something else 3 One more Comment ID PostId ProfileID Comment 1 1 1 Hi my name is 2 2