Bir oyunda kullanıcıların hareketlerini kaydeden bir veritabanı tablosu var. Her hareket ettiğinde, kullanıcı kimliklerini, move_index (her satırı artırır) ve bulundukları bölgenin kimliğini kaydeder. Bu kullanıcının son hareketini göstermek için -1 özel bir move_index değerine sahibim.seçmek için bir seç seçenekten bir sonuç
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
ben sql ile iki şey yapmak istiyorum:
- başladı ve genişletme
- (örneğin 3 bölge 0 başlamış ve bölgede bitmiş) belirli bölgelerde bitmiş tüm kullanıcıları Algılama yukarıda, belirli bölgelerde başlayan ve biten tüm kullanıcıları tespit edin VE belirli bir bölgeden geçmiş.
Birden çok SQL deyimi & java ile bunu nasıl yapacağımı biliyorum - ancak bunu tek bir SQL deyiminde nasıl yapacağımı bilmiyorum. Bu seçimin sonuçlarında seçim yapmak ve sonra bir seçim yapmak zorunda mıyım?
Teşekkürler - Buradan anladım. Bu standart SQL mi (yani Oracle üzerinde de çalışır mı?). Ve, performans sorunları, yapabileceğiniz SUBQUERIES sayısı üzerinde herhangi bir sınır var mı? – Kevin
@Kevin Altkümeler hemen hemen her RDBMS'dedir (hangi standardın bir parçası olduklarından emin değiller). Sınırlar açısından, verilerinizin büyüklüğü/şekline bağlı olarak değişir, ancak genellikle Mümkünse tek bir alt sorgudan daha fazlasını kullanın. (Çoğu durumda bir düz [JOIN] (http://dev.mysql.com/doc/refman/5.0/en/join.html) veya bazen bir [CASE] (http://dev.mysql.com/ doc/refman/5.0/tr/case-statement.html) veya geçici bir tablo daha uygun olabilir.) –
Çok açık ve kullanışlı bir yanıt. Bana çok iş kurtardığın için teşekkürler. – maartenmachiels