我有以下3個表:選擇開COUNT <X在關係數據庫
TestGroup
RecordNumber(PK)
測試
RecordNumber(PK)
TestGroupRecordNumber(FK )
結果
RecordNumber(PK)
TestRecordNumber(FK)
基本上,TestGroup是一組測試,並且每個測試包含多項成果。我想選擇所有小於X結果的TestGroups。什麼查詢將實現這一目標?
我有以下3個表:選擇開COUNT <X在關係數據庫
TestGroup
RecordNumber(PK)
測試
RecordNumber(PK)
TestGroupRecordNumber(FK )
結果
RecordNumber(PK)
TestRecordNumber(FK)
基本上,TestGroup是一組測試,並且每個測試包含多項成果。我想選擇所有小於X結果的TestGroups。什麼查詢將實現這一目標?
你只需要使用GROUP BY
和HAVING
:
SELECT TG.RecordNumber
FROM TestGroup TG
LEFT JOIN Test T ON TG.RecordNumber = T.TestGroupRecordNumber
LEFT JOIN Result R ON T.RecordNumber = R.TestRecordNumber
GROUP BY TG.RecordNumber
HAVING COUNT(R.TestRecordNumber) < X
我還使用LEFT JOIN
的情況下,測試組都沒有結果或者沒有測試。
您應該使用具有條款:
SELECT count(1), tg.recordNumber FROM testgroup tg
LEFT JOIN test t ON t.TestGRoupRecordNumber = tg.recordNumber
LEFT JOIN result r ON r.testRecordNumber = t.recordNumber
GROUP by tg.recordNumber
HAVING count(1) < 10