2016-11-05 4 views
-2

私は現在、複数のテーブルから必要なすべての情報を提供する大きなSELECT文を使用しています(パフォーマンスはそれほど素晴らしいことではありません)。しかし、私がしたいのは、testcase.foreignIDごとに1つのエントリだけを表示することですvariant.idVariant、最も計画的なテストセットを持つもの。TestcaseIDとVariantIDごとにMAX(DATE)のエントリのみを選択する方法は?

私はGroup Byを試しましたが、まだ成功していません。私はまた、内側のクエリの検索されたフィールドの名前にエイリアスを追加することをお勧め

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

:私は私のコメントで何を意味するか

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 
    ) 
+0

ソート後、またはMAX()を選択した後に、外側のクエリで1つのレコード(つまり「LIMIT 1」)のみを選択するとどうなりますか? – FDavidov

+0

私はかなり理解していません、SELECT文の例を教えていただけますか? – r00flr00fl

+0

サンプルデータを表示してください。 –

答えて

-1

はこのようなものです。

これはあなたのための解決策です。元のクエリを変更するソリューションは他にもありますが(パフォーマンスはあなたにとって問題ではないようです)、私は最初に提案された方向に進むでしょう。

関連する問題