Z góry przepraszam za mało znaczący tytuł tematu.
Posiadam tabelę w bazie danych w mysql o strukturze:
`id` - int, autoincremental
`name` - varchar
`status` - varchar
`start` - datetime
`stop` - datetime
`opis` - longtext
Przechowywane i dopisywane są w niej nazwy wykonanych zadań wraz z datą startu, stopu, oraz statusie zakończenia + w opisie log.
Wartości dla `name` są powtarzalne, jest to ok 150 różnych wpisów (chociaż zawsze mogą dojść nowe). `status` możne przyjmować tylko 3 wartości- 'O' (o.k) , 'B' (bad), 'U' (unknown).
Problemik polega na wyszukaniu wszystkich zadań, które ostatnio zakończyły się (`stop`) co najmniej 3-krotnym niepowodzeniem (`status` = 'B'), przy czym status 'U' zadania nie jest brany w ogóle pod uwagę.
Raport musi zawierać:
nazwę zadania ( `name`),
ile razy się nie udał ,
ostatni udany (`id`),
ostatni nieudany(`id`)
Proste wyszukiwanie poprzez wyciągnięcie wszystkich możliwych nazw i późniejszą iterację (w PHP ) po wszystkich rekordach o danym `name` jest lekko nieefektywne ze względu na ok 1 mln rekordów w tabeli - codziennie pojawia się ok 5000 nowych.
Typ silnika i indexy mogę dowolnie zmieniać.