Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 23.10.2007 Ostrzeżenie: (0%)
|
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ć. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Nieautoryzowani Postów: 92 Pomógł: 15 Dołączył: 21.10.2006 Ostrzeżenie: (0%)
|
Tu masz rozwiązanie
wysciwetlą Ci sie nazwy i lista statusow jakie mialy pokolei jesli liczba bledow ostatnich wynosi wiecej niz 2 pomijajac status 'U' jesli chcesz wiecej danych to musisz pokombinować. Np. zeby jeszcze podawal ile ostatnich razy pod rzad sie nie udał (pomijajac 'U')
dodatkowe dane jesli to zapytanie nie zwraca duzo wierszy mozesz pobrac dodatkowymi zapytaniami juz dla konkretnych name pobranych powyzszym zapytaniem Ten post edytował heaven 27.05.2009, 11:16:58 |
|
|
|
leon1313 optymalny algorytm wyszukiwania 25.05.2009, 21:26:34
erix A nie prościej przez group by...? Trochę zagmatwał... 26.05.2009, 17:18:54
leon1313 Sprawdzę jutro na tabeli i zapodam wynik.
Obecnie ... 27.05.2009, 17:35:33 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 09:11 |