选择On COUNT<关系数据库中的x

时间:2013-01-31 20:59:21

标签: sql select relational-database

我有以下3个表格:

TestGroup
RecordNumber(pk)

测试
RecordNumber(pk)
TestGroupRecordNumber(fk)

结果
RecordNumber(pk)
TestRecordNumber(fk)

基本上,TestGroup是一组测试,每个测试都包含许多结果。我想选择结果少于X的所有TestGroup。什么查询会实现这个目标?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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