Cześć
Mam taką tabelkę, do której lądują nagrane akcje wszystkich użytkowników w danych aplikacjach. Akcją może być np. klik myszką, wpisanie tekstu lub po prostu focus na daną aplikację.
Wygląda to mniej więcej tak:
Jak widać akcja 5 jest nieprawidłowa, ponieważ nie może być tak, że przed focusem są jakieś akcja dla użytkownika A i aplikacji Powerpoint.
Pierw focus a potem akcje.
Chciałbym móc takie rzeczy wychwycić.
W tym celu zrobiłem złączenie dwóch tablic - a właściwie tej samej tylko z sąsiadującym wierszem:
select * from akcje a1 INNER JOIN akcje a2 ON a2.id_akcji = a1.id_akcji + 1 where a1.id_uzytkownik = a2.id_uzytkownik AND a1.Aplikacja != a2.Aplikacja and a2.akcja != 'Focus'
I generalnie to chodzi ale tylko jak w tabeli są wiersze obok siebie tego samego użytkownika. Np. między id_akcji 4 i 5 działa to: użytkownik A, są różne apllikację i ta (id_akcji + 1) nie jest focusem.
Ale jakby ta akcja 5 była np. 7 a 5 i 6 byłyby dla użytkownika B to już by to nie zadziałało. Byłaby dziura w numeracji.
Czuję, że musiałbym pogrupować tą tabelę akcji użytkownikami, potem nadać im jakąś nową numerację by była ciągła dla użytkownika i potem zrobić takiego joina jak powyżej.
Ale zabrakło wiedz :)