SQL语句以特定列的组显示

2024-02-01

我目前正在参与创建基于网络的调度系统的项目。我想从数据库获取数据,并将其显示在表格(时间表格式)中。

在数据库中,我有 2 个表


schedule
id date        day
1  22/09/2014  Monday
2  23/09/2014  Tuesday  

block
block_id schedule_id   worker   shift
1         1            Ahmad    1
2         1            Abdul    1
3         1            Faris    2
4         2            Iqbal    2  

日程表的每一天都有几个块,schedule_id(在块中)指的是它应该是哪一天。列移位(在块中)将块定义为早上(shift=1)和晚上(shift=2),

我想显示这样的东西



date        day      Morning   Evening
22/09/2014  Monday   Ahmad     Faris
                     Abdul
23/09/2014  Tuesday            Iqbal
  

我尝试创建像这样的sql语句



SELECT schedule.date, schedule.day, block.worker
FROM schedule 
LEFT JOIN block
ON schedule.id = block.schedule_id  

但表格的格式不正确



date        day      Morning   Evening
22/09/2014  Monday   Ahmad    
22/09/2014  Monday   Abdul 
22/09/2014  Monday             Faris
23/09/2014  Tuesday            Iqbal
  

我知道我的陈述中缺少一些内容,以及如何实现这一点。

感谢您的帮助。


最初,这是我想到的:

SELECT s.date, s.day, COALESCE(GROUP_CONCAT(bm.worker SEPARATOR ' '),'') as Morning,COALESCE(GROUP_CONCAT(be.worker SEPARATOR ' '),'') as Evening
FROM schedule s LEFT JOIN 
block bm ON s.id = bm.schedule_id AND bm.shift=1 LEFT JOIN 
block be ON s.id = be.schedule_id AND be.shift=2
GROUP BY s.date,s.day

Result:

DATE        DAY       MORNING       EVENING
22/09/2014  Monday    Ahmad Abdul   Faris Faris
23/09/2014  Tuesday                 Iqbal

导致Fiddle http://www.sqlfiddle.com/#!2/4dfbc6/25.

正如你所看到的 傍晚的田野包含两次 Faris。所以我使用了两个查询并加入了这些结果。像这样:

SELECT T1.date,T1.day,COALESCE(T1.Morning,'') as Morning,COALESCE(T2.Evening,'') as Evening FROM
    (SELECT s.date, s.day, GROUP_CONCAT(bm.worker SEPARATOR ' ') as Morning
     FROM schedule s LEFT JOIN 
     block bm ON s.id = bm.schedule_id AND bm.shift=1
     GROUP BY s.date,s.day) T1
  JOIN
    (SELECT s.date, s.day,GROUP_CONCAT(be.worker SEPARATOR ' ') as Evening
     FROM schedule s LEFT JOIN 
     block be ON s.id = be.schedule_id AND be.shift=2
     GROUP BY s.date,s.day) T2 
  ON T1.Date=T2.Date AND T1.Day=T2.Day

Result:

DATE        DAY      MORNING        EVENING
22/09/2014  Monday   Ahmad Abdul    Faris
23/09/2014  Tuesday                 Iqbal

查看结果SQL小提琴 http://www.sqlfiddle.com/#!2/4dfbc6/23.

解释:

我们分别选择“早上”和“晚上”,然后将这两个表与日期和星期连接起来。最后从连接查询中获取结果。

GROUP_CONCAT用于对具有相同日期和日期的字段进行分组。我们可以用SEPARATOR ' '用于作为分隔符的空间。如果您删除SEPARATOR ' ',您将得到用逗号(,)分隔的结果。

COALESCE用于用空字符串替换 null 值('').

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

SQL语句以特定列的组显示 的相关文章

  • WHERE 子句或 ON 子句中的 INNER JOIN 条件?

    我今天输错了一个查询 但它仍然有效并给出了预期的结果 我的意思是运行这个查询 SELECT e id FROM employees e JOIN users u ON u email e email WHERE u id 139840 但我
  • SQL COUNT(*) 返回错误答案

    以下脚本应返回部门名称以及这些部门中的员工人数 营销 行政和销售部门有 0 名员工 但返回值不是 0 而是 1 我怎样才能纠正它 select Department Departments DepartmentID count as Num
  • 左连接,左表中没有重复行

    请看下面的查询 tbl 目录 Content Id Content Title Content Text 10002 New case Study New case Study 10003 New case Study New case S
  • jQuery和PHP中如何知道返回数据是Json还是String?

    我想在客户端 jQuery 检查 PHP 函数返回的数据是否是 Json 对象或 String 来分配不同的函数 如果 json 的格式不正确 jQuery 的 parseJson 将生成异常 您可以将调用包装在 try catch 块中
  • 使用 Hibernate Dialect 设置表字符集/排序规则?

    我使用 Hibernate MySQLInnoDB Dialect 来生成 DDL hibernate cfg xml
  • 从提交的表单中转义字符串中的字符

    每次发布帖子时 我都会得到转义字符 gt gt gt 我有一个多步骤表单 它将数据从一种表单传输到另一种表单 我将这些值与准备好的语句一起保存在数据库中 数据库中的值当前看起来像Paul s House 用户应该可以在字符串中使用单引号和双
  • 获取 SQL 表上未使用的唯一值

    我有一个表 其中有一列描述数字 ID 该 ID 对于所有行都是唯一的 但它不是主键 数字 ID 是有限的 假设答案可以是从 1 到 10 SELECT ID FROM TABLE ID 1 2 5 我必须 通过 UI 向用户呈现未使用的值
  • Propel Query 中的动态表名称

    我想知道您是否可以使 propel 查询的表名称动态化 有点像变量 一个例子类似于 DynamicVar Query create 我让它在 ifs 中工作 就像下面的例子一样 但如果更动态地制作 可以删除相当多的行 这些表的设置都是相同的
  • CSV 从 UTF8 到 ISO-8859-1

    我正在尝试修改我的 CSV 导出 但它不会将我的 CSV 从 UTF 8 转换 保存为 ISO 8859 1 请问我做错了什么吗 实际上自从修改了这个之后 我得到了一个空的 CSV 文件 php 7 0 x function my Gene
  • URL 重写帮助

    RewriteEngine on RewriteCond REQUEST URI index php RewriteRule index php q 1 L 这应该将任何 url 重写为 index php q url 并且它可以工作 反正
  • 简单的t-sql而不是触发器

    任何人都可以帮助解决简单的 t sql 脚本与板载触发器的问题吗 我使用非常简单的触发器将数据从一个表复制到另一个表 这些表之间没有关系 当我尝试在触发器创建后 从同一脚本 直接第一次插入数据时 我得到了所需的结果 但所有接下来的尝试都会失
  • 在无文本搜索查询中使用 sphinx 与 MySQL

    我有这样的疑问 假设我有一个大表 与一个较小的用户表有关系 这个想法是在那个真正的大表中搜索大于给定日期的日期并按分数 例如大整数 排序 并同时获取相关的用户信息 此查询的结果大约每 10 分钟就会更改一次 所以 没有文本搜索 但我有一个非
  • 计算行数并仅获取表中的最后一行

    我有一张桌子叫employeexam其结构和数据是这样的 id course id employee id degree date 1 1 3 8 2013 01 14 2 2 4 15 2013 01 14 3 2 4 17 2013 0
  • 如何覆盖 phpunit 中导出的变量?

    我知道我可以设置环境变量 https phpunit de manual current en appendixes configuration html在我的 phpunit xml 里面
  • 解析 PHP 响应:未捕获的语法错误:意外的标记 <

    我正在使用 AJAX 来调用 PHP 脚本 我唯一需要从响应中解析的是脚本生成的随机 ID 问题是 PHP 脚本会引发许多错误 这些错误实际上很好 不会妨碍程序功能 唯一的问题是当我跑步时 parseJSON response I get
  • 如何获取mysql中一条记录的大小

    如果表包含 TEXT 或 BLOB 类型的字段 如何获取 MySql 中记录的大小 是否可以使用sql语句获取记录或表的大小 要计算字符串或 blob 的大小 以字节为单位 请使用LENGTH YourColumn http dev mys
  • 如何使用 PDO 动态构建查询

    我正在使用 PDO 并想做这样的事情 query dbh gt prepare SELECT FROM table WHERE column value query gt bindParam table tableName query gt
  • php向多个收件人发送邮件

    我可以通过在邮件程序中定义 id 来将电子邮件发送到一个电子邮件 id 但是当用户在表单中键入 消息和电子邮件 id 时 我无法理解如何发送到多个收件人 例如 我正在显示一个带有两个文本区域的表单 一个用于电子邮件 ID 一个用于自定义消息
  • 更新查询时 ios 中出现“数据库锁定”错误

    我正在使用下面的代码更新查询 using sqlite 但我越来越 database is locked error 我尝试搜索一些 SO 链接 建议关闭数据库 但我再次执行此操作时遇到相同的错误 我已经提到过代码中出现错误的地方 cons
  • 我的数据库有错误

    创建表时如下 create table Ticket ticket id integer not null primary key AirlineName varchar not null CustomerName varchar from

随机推荐

  • Azure DevOps 管道中存在不明确的参数“HEAD^”

    我在网上看到很多示例如何在 CI 中的 Azure DevOps 管道期间获取更改文件 只需使用简单的代码 changedFiles git diff name status HEAD HEAD 但是当我尝试在 yaml 管道中使用它时出现
  • 蚂蚁的战斗策略

    这个问题是指谷歌赞助的人工智能挑战 http aichallenge org 每隔几个月举行一次的竞赛 参赛者需要提交一个能够自主与其他机器人玩家玩游戏的机器人 刚刚结束的比赛名为 蚂蚁 您可以阅读其所有规范here http aichal
  • 使用 LINQ 进行现有查询

    我想使用 LINQ 获取员工列表 这些员工必须在TypeOfWorks列出typeofWork通过 Id 在论证中 public class Employee public virtual IList
  • Codeigniter - 使用 set_value() 填充表单进行编辑(不涉及 POST)

    我有一个包含表单的视图 带有输入字段和单选按钮 该表单需要填充数据库中的数据 以便将其用作数据编辑表单 我已使用 set value 函数进行表单验证 其中在发布后从同一控制器调用视图 但是如何在没有 POST 的情况下使用 set val
  • 加速 Numpy 数组/OpenCV cv2 图像的迭代

    我有 3 个形状 gt 500 500 的 numpy 数组 我正在尝试同时迭代它们 我尝试了两种不同的方法 但都很慢 Here Ix Ix blur Ix Iy blur and Iy Iy blur大小相同 我正在尝试寻找特征并将其绘制
  • 将 JSON jQuery Ajax 发送到 PHP 并返回

    我在通过 Ajax 将 JSON jQuery 数组发送到 PHP 脚本时遇到问题 这里有什么问题 var tee voting image img attr id var vote 1 var thing tee tee vote vot
  • 为kendo数据源提供一个角度范围变量

    我目前正在尝试用远程数据填充剑道网格 Kendo 有它自己的函数来获取数据 但我想使用我创建的角度工厂 所以我有一个工厂 它有一个函数 getSkills 该函数从我的api获取所有技能对象 angular module MyApp fac
  • 最佳实践 - 从 Web 服务抛出异常

    我们有一个 ASMX Web 服务 我们使用 ajax jQuery 从 ASP NET 应用程序调用它 我们的网络方法的典型示例如下 WebMethod public void DoSomething BusinessObject myP
  • git-svn 忽略大型二进制文件

    我正在使用一个大型 svn 存储库 超过 30 000 个修订版 我使用 git svn 的成功有限 我的主要问题是 svn 存储库包含对大型二进制文件 30MB 的频繁更新 我不关心这些文件的历史记录 但我确实关心这些文件的当前版本 如果
  • sizeof 在可变长度数组上的行为(仅限 C)

    我的问题是具体如何sizeof 当传递的参数是动态数组可变长度数组时的行为 让我们考虑一个例子 int fun int num of chars char name arr num of chars 0 Do something retur
  • IHttpControllerFactory 在哪里?

    微软网站说有一个IHttpControllerFactory http msdn microsoft com en us library system web http dispatcher ihttpcontrollerfactory v
  • 在 PHP 中使用当前 http 请求的查询字符串获取路径[重复]

    这个问题在这里已经有答案了 我需要从当前请求的 URL 中获取带有查询字符串的路径 例如 如果当前 URL 是 http www example com example test hi php randomvariable 1 我想要这个
  • android 拾取音频文件

    我需要从 SD 卡获取音频文件并播放 我认为这可以通过获取音频文件的 URI 来完成 因此 要选择音频文件 我使用以下代码 Intent intent new Intent intent setType audio intent setAc
  • 由 java.lang.SecurityException 引起:UID 10243 无权 content://media/external/audio/media/5927 [user 0]

    我是 Android 开发新手 正在尝试调试我们的应用程序崩溃的原因 当我们尝试向 Android 设备发送推送通知时 我们遇到了崩溃 这是我需要解决的入职问题 我不知道是什么导致了这个问题 该问题可以在 Android N O 和 P 中
  • C# 中的 Thread.Sleep()

    我想用 C 制作一个图像查看器Visual Studio 2010 http en wikipedia org wiki Microsoft Visual Studio Visual Studio 2010几秒钟后一张一张地显示图像 i 0
  • 为什么在传递对象时使用“ref”关键字?

    如果我将对象传递给方法 为什么要使用 ref 关键字 这不是默认行为吗 例如 class Program static void Main string args TestRef t new TestRef t Something Foo
  • .尝试与&&性能

    假设我有一个来自 SQL 查询的传入值 如下所示 grok Foo select foo attr1 foo attr2 first foo attr2是一个可为空的字段 现在假设我需要对输出进行处理 如果存在 krug grok foo
  • 正则表达式可选匹配行首/行尾

    我如何选择匹配开始 or end 正则表达式中的一行 例如 lt s 不匹配以空格字符开头或行开头 我的问题是 PHP 匹配以下内容 str bold bold bold echo preg replace lt s s strong 1
  • 如何在iPhone上分割字符串?

    我从服务器获得了以下值 动态 drwxr xr x 9 0 0 4096 Jan 10 05 30 California 现在我想获得这样的价值 drwxr xr x 9 0 0 4096 Jan 10 05 30 California 请
  • SQL语句以特定列的组显示

    我目前正在参与创建基于网络的调度系统的项目 我想从数据库获取数据 并将其显示在表格 时间表格式 中 在数据库中 我有 2 个表 schedule id date day 1 22 09 2014 Monday 2 23 09 2014 Tu