小编Got*_*mog的帖子

可以重用子查询吗?

我在尝试执行查询时遇到了一些问题.我有两个表,一个包含元素信息,另一个表包含与第一个表的元素相关的记录.我们的想法是在同一行中获取元素信息和几条记录信息.

结构可以解释如下:

 table [ id, name ]
 [1, '1'], [2, '2']

 table2 [ id, type, value ]
 [1, 1, '2009-12-02']
 [1, 2, '2010-01-03']
 [1, 4, '2010-01-03']
 [2, 1, '2010-01-02']
 [2, 2, '2010-01-02']
 [2, 2, '2010-01-03']
 [2, 3, '2010-01-07']
 [2, 4, '2010-01-07']
Run Code Online (Sandbox Code Playgroud)

这是我想要实现的目标:

 result [id, name, Column1, Column2, Column3, Column4]

 [1, '1', '2009-12-02', '2010-01-03', , '2010-01-03']
 [2, '2', '2010-01-02', '2010-01-02', '2010-01-07', '2010-01-07']
Run Code Online (Sandbox Code Playgroud)

以下查询获得了正确的结果,但在我看来效率非常低,不得不为每列迭代table2.无论如何都可以做一个子查询并重用它?

SELECT
      a.id,
      a.name,
      (select min(value) from table2 t where t.id = subquery.id and t.type = 1 group by …
Run Code Online (Sandbox Code Playgroud)

sql subquery query-optimization

20
推荐指数
2
解决办法
3万
查看次数

在JUnit中的Test类中定义内部类时出错

我在从TestCase继承的Test类中为JUnit 3定义内部类时遇到一些问题.场景如下:

Foo.java

public class Foo {
  public void method() { ... }
}
Run Code Online (Sandbox Code Playgroud)

FooTest.java

public class FooTest extends TestCase {
  public class Bar extends Foo {
    public void method() { ... }
  }
  public void testMethod() { ... }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我从Eclipse运行它,测试运行正常,但如果我尝试从Ant任务运行它失败:

[junit] junit.framework.AssertionFailedError:类Foo $ Bar没有公共构造函数TestCase(String name)或TestCase()

Bar不是Test类,它只是Foo的一个子类,它覆盖了一些方法,在测试时我不需要做真正的事情.

我现在很迷茫,我不知道如何解决这个问题.是独立创建子类的唯一方法吗?

java reflection junit inner-classes junit3

10
推荐指数
2
解决办法
5402
查看次数