сгруппировать и заказать в web2py - PullRequest
1 голос
/ 06 февраля 2012

У меня есть три таблицы:

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))

Хотелось бы иметь список проектов с количеством пройденных и неудачных тестов. Тест пройден / не пройден, если самый новый результат имеет статус «пройти». Если для теста нет результата, статус должен быть Нет.

1 Ответ

0 голосов
/ 08 февраля 2012

Можно попробовать что-то процедурное

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
...