-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
)
ソート後、またはMAX()を選択した後に、外側のクエリで1つのレコード(つまり「LIMIT 1」)のみを選択するとどうなりますか? –
FDavidov
私はかなり理解していません、SELECT文の例を教えていただけますか? – r00flr00fl
サンプルデータを表示してください。 –