如何选择只按每个TestcaseID和VariantID使用MAX(DATE)?

时间:2016-11-05 10:55:28

标签: mysql

我目前正在使用一个大的SELECT语句,它为我提供了多个表中所需的所有信息(性能不是很遗憾),但我想做的是每个testcase只显示一个条目.foreignID AND variant.idVariant,具有最高计划测试值的日期。日期

我尝试过Group By,但尚未成功。

SELECT testcase.foreignID AS TcID, testcase.foreignOrderNr AS TcOrderNr,testcase.Name AS TcName,variant.Name AS Variant,device.Supplier,plannedtestset.foreignID AS TestSetID,plannedtestset.Date,tester.Name AS Tester,testcaseexecution.Result,testcaseexecution.Comment,sw_version.Version AS SW_Version,hw_version.Version AS HW_Version,testcase.ABP,testtype.Name AS TestType,project.Name AS Project
    FROM mydb.testcaseexecution
    INNER JOIN mydb.testcase
    ON testcaseexecution.Testcase_idTestcase=testcase.idTestcase
    INNER JOIN mydb.plannedtestset
    ON testcaseexecution.PlannedTestSet_idPlannedTestSet=plannedtestset.idPlannedTestSet
    INNER JOIN mydb.device
    ON plannedtestset.Device_idDevice=device.idDevice
    INNER JOIN mydb.variant
    ON device.Variant_idVariant=variant.idVariant
    INNER JOIN mydb.tester
    ON plannedtestset.Tester_idTester=tester.idTester
    INNER JOIN mydb.sw_version
    ON plannedtestset.SW_Version_idSW_Version=sw_version.idSW_Version
    INNER JOIN mydb.testtype
    ON plannedtestset.TestType_idTestType=testtype.idTestType
    INNER JOIN mydb.project
    ON plannedtestset.Project_idProject=project.idProject
    INNER JOIN mydb.hw_version
    ON device.HW_Version_idHW_Version=hw_version.idHW_Version

    WHERE plannedtestset.Date In(
        SELECT Max(plannedtestset.Date)
        FROM mydb.plannedtestset
        GROUP BY testcase.idTestcase
    )

1 个答案:

答案 0 :(得分:-1)

我在评论中的意思是这样的:

SELECT .... , MAX(A.plannedtestset.Date),...
  FROM (<your original select>) A ;

我还建议将别名添加到内部查询的检索字段的名称中。

这是简单的(适合您)解决方案。还有其他解决方案可以修改您的原始查询,但是(因为性能对您来说似乎不是问题)我会先按照此处提出的方向进行。