2013-01-31 62 views
0

我有以下3個表:選擇開COUNT <X在關係數據庫

TestGroup
RecordNumber(PK)

測試
RecordNumber(PK)
TestGroupRecordNumber(FK )

結果
RecordNumber(PK)
TestRecordNumber(FK)

基本上,TestGroup是一組測試,並且每個測試包含多項成果。我想選擇所有小於X結果的TestGroups。什麼查詢將實現這一目標?

回答

3

你只需要使用GROUP BYHAVING

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的情況下,測試組都沒有結果或者沒有測試。

6

您應該使用具有條款

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