Cytat(irmidjusz @ 10.01.2014, 22:07:46 )

Ciekawe zagadnienie. Udało Ci się coś zrobić?
Mimo pozornej prostoty jednak jest to dość skomplikowane (przynajmniej jak dla mnie).
Moja wersja wyglda tak:
SELECT DISTINCT a.id_zjawiska, b.nazwa_kamery, a.DATA, a.obrazek, a.inf, c.nazwa FROM zjawiska AS a, kamera b, programy c
WHERE EXISTS
SELECT id_zjawiska\n"
FROM zjawiska AS Pole2\n"
WHERE (Pole2.DATA BETWEEN a.data-INTERVAL 5 SECOND AND a.DATA + INTERVAL 5 SECOND)
AND Pole2.id_zjawiska <> a.id_zjawiska AND Pole2.kamera <> a.kamera AND a.kamera=b.id_kamera AND a.program=c.id_prg
ORDER BY a.DATA DESC
Niestety nie jest to doskonałe rozwiązanie, bo gubi mi część danych mieszczących się w zakresie.
Sposób dostarczania wyniku jest dla mnie obojętny. Korzystam z php więc najlepiej aby wynikiem był wiersz wg powyższego zapytania.
Jak się zabrać? Moja wizja jest taka:
1) Wybieramy wszystkie zjawiska z tabeli i nazywamy lista1
2) Duplikujemy lista1 do lista2
3) Tworzymy licznik i nadajemy mu wartość 0
4) Tworzymy pustą liste3 - będzie ona zawierać powtarzajace się dane
5) pobieramy element lista1[licznik]
6) w pętli sprawdzamy każdą wartość listy2 w poszukiwaniu czasu +-5 sekund od wartości z pkt. 5
7) jeżeli czas się mieści w kryterium wpisujemy do listy3 jednocześnie usuwając z listy2
8) zwiększamy licznik o 1
9) jeżeli licznik<liczby elementów lista1 wracamy do pkt. 5
Do tego jakby się udało zgrupować dane z lista3 wg wartości z lista1 to już byłby full wypas.
W php bym to napisał, jednak chodzi o wydajność, więc wypada zaprzęgnąć do tego mysql.