webby中的groupby和orderby

时间:2012-02-06 13:30:24

标签: python web2py

我有三张桌子:

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”,则测试通过/失败。如果没有测试结果,则状态应为“无”。

1 个答案:

答案 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