我有以下 3 个表:
测试组
记录号 (pk)
测试
记录号 (pk)测试组记录
号 (fk)
结果
记录号
(pk)测试记录
号 (fk)
基本上,TestGroup 是一组测试,每个测试包含多个结果。我想选择所有结果少于 X 的测试组。什么查询将实现这一目标?
我有以下 3 个表:
测试组
记录号 (pk)
测试
记录号 (pk)测试组记录
号 (fk)
结果
记录号
(pk)测试记录
号 (fk)
基本上,TestGroup 是一组测试,每个测试包含多个结果。我想选择所有结果少于 X 的测试组。什么查询将实现这一目标?
你应该使用有子句:
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
你只需要使用GROUP BY
and 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
如果测试组没有结果或没有测试,我也会使用。