我有三张桌子:
db.define_table('projects',Field('name')) db.define_table('tests', Field('name'), Field('project',db.projects, notnull=True)) db.define_table('results', Field('test',db.tests, notnull=True), Field('status'), Field('started', 'datetime', writable=False))
我想有一个项目列表,其中包含已通过和未通过测试的数量。如果最新结果的状态为“pass”,则测试通过/失败。如果没有测试结果,则状态应为“无”。
答案 0 :(得分:0)
你可以尝试一些程序性的
for project_row in db(db.projects).select():
numPassed = 0
numFailed = 0
numNull =0
num = 0
for test_row in db(db.tests.project==project_row).select():
results=db(db.results.test==test_row).select(orderby=~db.results.started,
limitby=0)
if len(results) == 0:
numNull += 1
elif results[0].status=="pass":
numPassed +=1
else:
numFailed +=1
print project_row.name, numPassed, numFailed, numNull