查询每个小部件最近的两个条目

Posted

技术标签:

【中文标题】查询每个小部件最近的两个条目【英文标题】:Query most recent TWO entries per widget 【发布时间】:2009-09-08 19:54:02 【问题描述】:

我有两张桌子。一个(小部件)有一个小部件列表(ID、widget_name、颜色等)和有关它们的数据。 另一个(测试)有一个在小部件(ID、日期、info1、info2 等)上运行的测试列表。

我想要做的是显示最近的两个测试。我认为我真的不需要为此使用表格小部件,但我对其进行了描述,以便您知道我来自哪里。

我构建了一个“总计”查询,该查询使用 MAX() 函数并显示每个 ID 的单个最近日期。然后,我可以使用此查询构建另一个查询,该查询显示有关该小部件在该日期发生的测试的有用信息。不过,我真正需要的是为每个小部件提供最近的两个测试日期。

【问题讨论】:

PS:Widgets 和 Tests 之间是一对多的关系。换句话说,Tests 中的每个 ID 都有很多行。每个测试都占用一行并与特定日期相关联。现在我觉得我说得太多了,所以我要停下来。 你可以编辑你自己的问题——你不需要添加评论来改变它。 【参考方案1】:

如果您需要总体上最近的两个测试,那么

Select * From Tests T
Where (Select Count(*) From tests
       Where testDate > T.TestDate) < 2

如果您需要对每个 Widget 进行两次最近的测试,那么

Select * From Tests T
Where (Select Count(*) From tests
       Where WidgetId = T.WidgetId 
           And testDate > T.TestDate) < 2

【讨论】:

我不知道我的评论是否通过了。有效!非常感谢【参考方案2】:

(假设同一个小部件的所有日期都是唯一的)

select T.*
from Widget W
join Test T on T.widget_id = W.id
where T.date >= (
    select max(T2.date)
    from Test T2
    where T2.widget_id = W.id
    and T2.date < (
        select max(T3.date)
        from Test T3
        where T3.widget_id = W.id
    )
) 
or T.date == (
    select max(T2.date)
    from Test T2
    where T2.widget_id = W.id
)

【讨论】:

以上是关于查询每个小部件最近的两个条目的主要内容,如果未能解决你的问题,请参考以下文章

带有 ListView 的小部件为找到的每个项目显示“正在加载”

如何为 Tkinter 条目小部件设置默认文本

如何将文件位置存储到条目窗口小部件中--Tkinter

为每个小部件提供唯一数据

通过条目小部件添加到数据库中

在 WordPress 中使用 MySQL 查询检索小部件数据