0

我有以下 3 个表:

测试组
记录号 (pk)

测试
记录号 (pk)测试组记录
号 (fk)

结果
记录号 (pk)测试记录
号 (fk)

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

4

2 回答 2

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
于 2013-01-31T21:05:39.820 回答
3

你只需要使用GROUP BYand 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如果测试组没有结果或没有测试,我也会使用。

于 2013-01-31T21:07:05.607 回答