【问题标题】:Combine these 2 queries into 1. They work individually将这 2 个查询合并为 1 个。它们单独工作
【发布时间】:2020-01-08 14:44:25
【问题描述】:

我不是 sql 专家,我似乎无法让它工作。这是一个moodle数据库查询。

cmi.core.total_time 和 cmi.core.lesson_status 都在 prefix_scorm_scoes_track 表的元素列下。我只需要 cmi.core.lesson_status 值(下一列)= 已完成的条目,但我还需要 cmi.core.total_time 的值。

SELECT u.firstname FIRST,u.lastname LAST,c.fullname Course, st.attempt Attempt,st.value STATUS,FROM_UNIXTIME(st.timemodified,"%m-%d-%Y") DATE 
FROM prefix_scorm_scoes_track AS st 
JOIN prefix_user AS u ON st.userid=u.id
JOIN prefix_scorm AS sc ON sc.id=st.scormid
JOIN prefix_course AS c ON c.id=sc.course
WHERE st.value='completed' 
ORDER BY c.fullname, u.lastname,u.firstname, st.attempt




SELECT u.firstname FIRST,u.lastname LAST,ui.data Role,c.fullname Course, st.attempt Attempt,st.value "Completion Time",FROM_UNIXTIME(st.timemodified,"%m/%d/%y %h:%i") DATE
FROM prefix_scorm_scoes_track AS st 
JOIN prefix_user AS u ON st.userid=u.id
JOIN prefix_user_info_data AS ui ON ui.userid=u.id AND fieldid = 1
JOIN prefix_scorm AS sc ON sc.id=st.scormid
JOIN prefix_course AS c ON c.id=sc.course
WHERE st.element='cmi.core.total_time' 
ORDER BY c.fullname, u.lastname,u.firstname, st.attempt

【问题讨论】:

  • 是 MariaDB 还是 MySQL?什么版本?
  • 左连接 prefix_user_info_data 。在最后。或条件。等等
  • 你可以使用 union all 来合并结果。
  • 这是一个 MariaDB
  • 请详细说明,我对SQL语法不熟悉。

标签: mysql sql mariadb


【解决方案1】:
SELECT u.firstname FIRST,u.lastname LAST,ui.data Role,c.fullname Course, st.attempt Attempt,st.value "Completion Time",FROM_UNIXTIME(st.timemodified,"%m/%d/%y %h:%i") DATE
FROM prefix_scorm_scoes_track AS st 
JOIN prefix_user AS u ON st.userid=u.id
JOIN prefix_user_info_data AS ui ON ui.userid=u.id AND fieldid = 1
JOIN prefix_scorm AS sc ON sc.id=st.scormid
JOIN prefix_course AS c ON c.id=sc.course
WHERE st.element='cmi.core.total_time'  or st.value='completed'
ORDER BY c.fullname, u.lastname,u.firstname, st.attempt

【讨论】:

  • 请尝试此操作,因为您需要获取 element='cmi.core.total_time' 或 st.value='completed' 的记录
  • 这行得通,但是,它使用 or 部分创建了 2 行。导致问题的 2 列是 st.element 和 st.value。 st 元素有 4 个不同的数据点。其中 2 个是 cmi.core.total_time 和 cmi.core.lesson_status 并且在 st.value 列上我只想显示已在值表中完成的用户 ID,然后将 st.value 拉到 cmi.core.total_time 行中.我希望我能更好地解释这一点。
猜你喜欢
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多