Tôi có bảng cơ sở dữ liệu ghi lại chuyển động của người dùng trong trò chơi. Mỗi lần họ di chuyển, tôi ghi lại id người dùng của họ, move_index (gia tăng mỗi hàng) và id của vùng họ đang ở. Tôi có giá trị move_index đặc biệt là -1 để chỉ ra chuyển động cuối cùng của người dùng đó.chọn trên kết quả của một lựa chọn
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
Tôi muốn làm hai việc với sql:
- Phát hiện tất cả những người dùng bắt đầu và kết thúc ở khu cụ thể (ví dụ như bắt đầu trong vùng 0 và kết thúc ở khu vực 3)
- Mở rộng ở trên, phát hiện tất cả người dùng đã bắt đầu và kết thúc ở các khu vực cụ thể VÀ đi qua một khu vực cụ thể.
Tôi biết cách thực hiện điều này với nhiều câu lệnh SQL & java - nhưng tôi không biết cách thực hiện điều này trong một câu lệnh SQL đơn. Tôi có cần phải chọn và sau đó chọn kết quả của lựa chọn này không?
Cảm ơn - Tôi đã tìm thấy nó từ đây. Đây có phải là tiêu chuẩn SQL (tức là nó cũng làm việc trên Oracle?). Và, vấn đề hiệu suất sang một bên, là có bất kỳ giới hạn về số lượng SUBQUERIES bạn có thể làm gì? – Kevin
@Kevin Subqueries có khá nhiều RDBMS (không chắc họ là một phần của tiêu chuẩn nói trên). Về mặt giới hạn, nó phụ thuộc vào kích thước/hình dạng dữ liệu của bạn, nhưng tôi thường cố gắng không sử dụng nhiều hơn một truy vấn phụ nếu có thể. (Trong nhiều trường hợp một đồng bằng [JOIN] (http://dev.mysql.com/doc/refman/5.0/en/join.html), hoặc đôi khi một [CASE] (http://dev.mysql.com/ doc/refman/5.0/en/case-statement.html) hoặc bảng tạm thời có thể phù hợp hơn.) –
Câu trả lời rất rõ ràng và hữu ích. Cảm ơn vì đã cứu tôi rất nhiều công việc. – maartenmachiels