Mam tabelę bazy danych, która rejestruje ruchy użytkowników w grze. Za każdym razem, kiedy się poruszam, zapisuję ich identyfikator użytkownika, ruch_indeks (zwiększa każdy wiersz) i id strefy, w której się znajdują. Mam specjalną wartość move_index równą -1, aby wskazać ostatnią część tego użytkownika.wybierz z wyników wybranej opcji
id user_id move_index zone_id
----------------------------------------------------------------
0 11 0 0
1 11 1 0
2 11 2 0
3 11 -1 3
4 22 0 0
5 22 1 1
6 22 2 1
7 22 -1 3
chcę zrobić dwie rzeczy z sql:
- Wykrywanie wszystkich użytkowników, którzy rozpoczął i zakończył w poszczególnych strefach (np rozpoczęła się w strefie 0, a zakończył w strefie 3)
- Rozszerzanie powyżej, wykryj wszystkich użytkowników, którzy rozpoczęli i zakończyli działania w określonych strefach I przeszli przez określoną strefę.
Wiem, jak to zrobić z wieloma instrukcjami SQL & java - ale nie wiem, jak to zrobić w pojedynczej instrukcji SQL. Czy muszę dokonać wyboru, a następnie wybrać wyniki tego wyboru?
Dzięki - wymyśliłem to stąd. Czy jest to standardowy kod SQL (np. Czy działałby on również na Oracle?). A poza kwestią wydajności, czy istnieje jakiś limit liczby PODWÓJNEJ możliwości? – Kevin
Podzapytania Kevin są prawie w każdym RDBMS (nie jestem pewien, jaki standard stanowią część tego, co powiedzieliśmy.) Pod względem limitów, to naprawdę zależy od rozmiaru/kształtu twoich danych, ale generalnie staram się nie używaj więcej niż jednego podkwerendy, o ile to możliwe. (W wielu przypadkach zwykły [JOIN] (http://dev.mysql.com/doc/refman/5.0/en/join.html) lub czasami [CASE] (http://dev.mysql.com/ doc/refman/5.0/en/case-statement.html) lub tabela tymczasowa może być bardziej odpowiednia.) –
Bardzo jasna i użyteczna odpowiedź. Dzięki za uratowanie mnie dużo pracy. – maartenmachiels