MYSQL 内连接和派生表

标签 mysql

我有 2 个单独运行的查询,但不知道如何将它们合并为一个。

第一个计算一个植物的可用性,如下所示:

SELECT *, 
(off_time - on_time)/(UNIX_TIMESTAMP('x') - UNIX_TIMESTAMP('y')) AS A
FROM(
 SELECT equipment_id,
  IF(time_on < 'x', UNIX_TIMESTAMP('x'), UNIX_TIMESTAMP(time_on)) AS on_time,
   (CASE  
    WHEN (time_off IS NULL) THEN UNIX_TIMESTAMP(NOW())
    WHEN (time_off > 'y') THEN UNIX_TIMESTAMP('y')
    ELSE UNIX_TIMESTAMP(time_off)
   END) AS off_time
  FROM r) AS T
GROUP BY equipment_id 

但我只想显示被识别为可用于服务的工厂,该工厂存储在单独的表中,因此我认为我必须使用 JOIN,例如:

SELECT r.equipment_id, r.time_on, r.time_off, i.in_service
FROM r
INNER JOIN i
ON r.equipment_id=i.equipment_id

但是,我尝试将两者结合起来却失败了。我是自学成才,对此非常陌生,因此任何帮助、评论甚至只是对我的疑问的一些批评都是值得赞赏的。

最佳答案

那么你可以像这样加入它。

SELECT
  *,
  ((off_time - on_time)/(UNIX_TIMESTAMP('x') - UNIX_TIMESTAMP('y'))) AS A
FROM (SELECT
    r.equipment_id,
    i.in_service,
    IF(time_on < 'x', UNIX_TIMESTAMP('x'), UNIX_TIMESTAMP(time_on)) AS on_time,
    (CASE WHEN (time_off IS NULL) THEN UNIX_TIMESTAMP(NOW()) WHEN (time_off > 'y') THEN UNIX_TIMESTAMP('y') ELSE UNIX_TIMESTAMP(time_off) END) AS off_time
      FROM r
    left join i
      ON r.equipment_id = i.equipment_id) AS T
GROUP BY equipment_id

关于MYSQL 内连接和派生表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15066615/

相关文章:

sql - 我如何比较日期与mysql中的非日期类型字段

mysql - sql查询所需的指导

mysql - 如何根据从 mysql 检索到的数据生成图表?

Php不循环,在另一页仅提供一项,编辑

php - 没有从 Symfony2 中的实体获取数据

php - mysql查询因两个表连接而爆炸

mysql - 什么样的脚本可以批量调整图像大小?

mysql - 如何获取视频中的所有文章(按 ID 排序)及其所有小节?

php - 删除行时如何在mysql自动递增字段中保持正确的数字顺序

php - mysql_real_escape_string、stripslashes 和 htmlspecialchars