- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我见过很多与此类似的问题,但不太像这样。我需要做的是 LEFT JOIN 记录,到右表上的前一条记录。例如:
LEFT TABLE 'PROD':
idMachine |production | prod.date
1 |10 | 2016-05-02
2 |11 | 2016-05-15
3 |14 | 2016-06-01
3 |13 | 2016-06-15
RIGHT TABLE 'CONFIG':
idMachine | sett | config.date
1 | 30 | 2016-04-01
2 | 25 | 2016-04-01
3 | 20 | 2016-04-01
1 | 40 | 2016-05-01
3 | 45 | 2016-06-10
1 | 50 | 2016-06-15
and the result should be:
idMachine |production | sett | prod.date
1 |10 | 40 | 2016-05-02
2 |11 | 25 | 2016-05-15
3 |14 | 20 | 2016-06-01
3 |13 | 45 | 2016-06-15
系统是这样工作的,我记录了机器上的所有生产运行,我记录了每台机器配置上的每一个变化,我需要知道的是它对那个生产运行有什么设置。如果您注意到,在结果中,对于机器 1 和 3,连接不是针对配置的最新记录,而是针对生产发生之前的最后记录,这样我们就可以知道我们使用什么设置生产了什么。
我尝试使用 JOIN CONFIGS ON prod.date > config.date
加入,但它加入了之前的每个配置,而不仅仅是最后一个。如果我使用 LIMIT,它不会给我我需要的所有记录。我已经尝试使用 MAX 对子查询进行一些 JOINS,但是子查询只返回最新的配置,而不是以前的配置,所以“旧”运行没有配置...
非常感谢任何帮助!!!
最佳答案
子查询还需要是两个表的 JOIN,以允许您在 CONFIG 中为每个 PROD 获取之前的日期。然后再次将该子查询包含在与表的连接中以查找 sett
值(value)。
像这样:
SELECT p2.idMachine, p2.production, c2.sett, p2.date
FROM PROD AS p2
INNER JOIN
(SELECT p.idMachine, p.`date` AS prodDate, MAX(c.`date`) AS prev
FROM PROD AS p
INNER JOIN CONFIG AS c
ON p.idMachine = c.idMachine AND p.`date` >= c.`date`
GROUP BY p.idMachine, prodDate
) AS prevs
ON p2.idMachine = prevs.idMachine AND p2.`date` = prevs.prodDate
INNER JOIN CONFIG AS c2
ON prevs.idMachine = c2.idMachine AND prevs.prev = c2.`date`
如果你有一个 WHERE
子句来过滤您关心的 PROD 记录,您可能希望将它同时放在子查询和主查询中……等一下……
根据您的数据“塑造”的方式,这个版本少了一个连接可能会更好。
SELECT p2.idMachine, p2.production, c2.sett, p2.date
FROM (SELECT p.idMachine, p.production, p.`date`, MAX(c.`date`) AS prevConfigDate
FROM PROD AS p
INNER JOIN CONFIG AS c
ON p.idMachine = c.idMachine AND p.`date` >= c.`date`
GROUP BY p.idMachine, p.production, p.`date`
) AS p2
INNER JOIN CONFIG AS c2
ON p2.idMachine = c2.idMachine AND p2.prevConfigDate = c2.`date`
但是,这里的子查询计算每个 PROD 的 MAX,而不是每个 (idMachine, date);所以它可能比额外的连接成本更高。但是在这种情况下,多余的 WHERE
不需要子句(子查询中只需一个副本)。
我继续......还有一个相关的子查询版本,虽然我不喜欢它们......
SELECT p.*
, (SELECT sett
FROM CONFIG AS c
WHERE c.idMachine = p.idMachine
AND c.date <= p.date
ORDER BY c.date DESC LIMIT 1
) AS sett
FROM PROD AS p
;
另请注意,在所有这些中,我将日期与 >=
进行了比较或 <=
, 不是 <
或 >
;您可能需要根据您的实际数据/逻辑进行调整。
关于MYSQL - 连接到右表上的最后一条记录 PREVIOUS 从左表记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37843440/
用于获取所有季度中每个 ID 的 MAX 先前分数的最佳方法。 给定: ID QTR SCORE 21 1 3 21 2 5 21 3 3
我的应用程序包含照片,用户可以搜索符合特定条件的照片。假设某个用户通过标签搜索照片,我们得到如下信息: @results = Photo.tagged_with('mountain') 现在,@res
该表称为 imposto。 +------------------+------------+------+-----+---------+-------+ | Field |
我在这里不知所措。我觉得我已经尝试了所有的方法,并使用了其他帖子/教程中解释的确切方法。我知道您需要使用光标并设置第一个和最后一个可见文档,以便在向前移动的情况下从最后一个文档开始,在向后移动的情况下
Bootstrap容器横向有两种形式。将鼠标悬停在 Form1 上将增加宽度并减少 form2 的宽度。但逆转并没有发生。请提出任何建议。 Bootstrap Example
所以我刚读到我可以定位 previous sibling elements使用 :has(+ ) 伪类。 我去执行了以下规则。不幸的是,这是行不通的。我在祈祷什么吗? p { margin: 2r
我正在制作图像轮播 看我的 fiddle :https://jsfiddle.net/gd2n6paw/8/ 我是 jquery 新手,只是想知道我们如何制作轮播“下一个”和“上一个”控件,感谢您的帮
示例数据: library(dplyr) x % arrange(name,timestamp) 我想找到数据帧 anti_join(y,x) 中每个连续 block (使用 timestam
我尝试了hadoop-1.0.3以及1.0.4。两者都在伪集群模式下。 我的理解是,previous.checkpoint目录应该在由“fs.checkpoint.dir”指定的辅助名称节点下创建吗?
我有一个 MS SQL 表,其中包含具有以下列的股票数据:Id、Symbol、Date、Open、High、Low、Close。 我想自行加入该表,这样我就可以获得关闭的每日百分比变化。 我必须创建一
我正在使用 Selenium IDE 为我的网站编写测试,但我在让 selenium 使用 previous-sibling 单击按钮时遇到了问题 Arcade Reader 我
我有这个脚本: $('#ap').click(function() { $('#content-container').html($('#alertpay').html()); retu
这个问题已经有答案了: how to judge an element's previous or next element exist with jquery? (4 个回答) 已关闭 7 年前。
有没有办法改变浏览器中“上一个”按钮的位置? 问题如下: 用户进入页面 用户点击缩略图 大图像出现在弹出窗口(灯箱)和 URL 更改 来自 http://example.com/至 http://ex
我试图了解回调在这种情况下的工作原理。 例如给定这段代码: var images = jQuery.map((1234567 + '').split(''), function(n) { retu
我似乎无法按照我想要的方式滚动浏览我的 ResultSet : public void getCurves(String runId, File file, Connection conn) {
嗨,我正在使用 jquery mobile,这是代码 parisfrance generique code:24
使用 Apache Commons Collections,我找到了 OrderedMapIterator 接口(interface),可以在 OrderedMap 中来回导航。迭代到下一个条目按预期
我在mysql查询中使用这些代码 select c1.date,sum(SELECT IFNULL(cx.purchase-cx.sold,0))+MAX(p.openqty) as open
我正在尝试从数据库中获取上一张图像,其中图像按 ID 号列出。经过一番研究后,我遇到了这个查询,它应该提供之前的结果。然而它并没有这样做。相反,它提供小于当前 ID 号的第一个结果。 (代码格式为 P
我是一名优秀的程序员,十分优秀!