Есть лучший способ сделать это? - PullRequest
2 голосов
/ 22 марта 2011

У меня есть таблица со столбцами 'cellid', 'date' (datetime) и 'block' (real).

Я пытаюсь найти все идентификаторы, которые имели block> 1 дляпоследние 3 дня.

В настоящее время я делаю это так:

cells = npar.db.execute("SELECT cellid FROM data WHERE block > 1 AND date=?", (files[0][1],)).fetchall()
cells1 = npar.db.execute("SELECT cellid FROM data WHERE block >1 AND date = ?", (files[1][1],)).fetchall()
self.common(cells,cells1)
cells1 = npar.db.execute("SELECT cellid FROM data WHERE block >1 AND date = ?", (files[2][1],)).fetchall()
self.common(cells,cells1)

print len(cells)
def common(self,a,b):
    for item in a:
            if item not in b:
                a.remove(item)

b = npar.db.execute("SELECT cellid FROM data WHERE block > 1 AND date >= ? GROUP BY cellid HAVING COUNT(cellid) = 3", (files[2][1],)).fetchall()
        print len(b)

len (b) не равно len (ячейки)

1 Ответ

3 голосов
/ 22 марта 2011

"за последние 3 дня"? Таким образом, следующее может работать?

cells = npar.db.execute("SELECT cellid FROM data "
                        "WHERE block > 1 "
                        "AND date >= ? "
                        "GROUP BY cellid "
                        "HAVING COUNT(*) = 3", (files[0][1],)).fetchall()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...