2017-05-14 2 views
1

은 내가 중포 기지 데이터베이스가 같은 구조를 가지고있다.중포 기지 간격 결합 된 쿼리

내가있는 경우 :

long start = 1494637200000; 
long end = 1494640800000; 

과 :

1) 내가에서 얻을 수있는 방법 :

DatabaseReference userRef = dbRef.child("users").child(uid); 

을 좀 더 1 시간 후) orderByChild을 (사용할 수없는 경우 startend과 겹치는 모든 간격을 데이터베이스에 저장 하시겠습니까?

는 SQL :

select * from [userID] where start + " < " + 1494640800000 + " AND " + end + " > " + 1494637200000

2) 내가하지만 "black"색상과의 startend와 중복되는 데이터베이스의 모든 간격에서 얻을 수 있습니까?

는 SQL :

select * from [userID] where start + " < " + 1494640800000 + " AND " + end + " > " + 1494637200000 AND color = "black"

난 당신 이름이 튜토리얼 참조 제안하는 쿼리 작성을 시작하기 전에

답변

1

(나는 그냥 이해할 수 있도록, 다른 언어로 답변을 받아) : The Firebase Database For SQL Developers를. 원하는 정확한 것을 얻기위한 정확한 방법을 배우게됩니다.

String firebaseField = "1494637200000_1494640800000_black"; 
ArrayList<String> arrayList = new ArrayList<>(); 

String[] data = firebaseField.split("_"); 
for(String part : data) { 
    arrayList.add(part); 
} 

long start = Long.valueOf(arrayList.get(0)); 
long end = Long.valueOf(arrayList.get(1)); 
String color = arrayList.get(2); 

if(yourStartValue < start && yourEndValue > end && color.equals("black")) { 
    //Your logic here 
} 

는 희망이 도움이 아래에 언급 한 바와 같이

가 값을 변환하려면이 코드를 사용하십시오.

+0

이전에이 튜토리얼을 보았습니다. 2-3 자로 쿼리하는 유일한 방법은 특수 문자로 구분 된 하나의 값으로 결합하는 것입니다. 유일한 방법인가요? – 4bottiglie

+0

예, 맞습니다. 이것은 Firebase의 일반적인 관행입니다. –

+0

일정 기간이 지난 후에 다른 모든 매개 변수로 쿼리하려고한다면 모든 간격을 새 값으로 업데이트해야합니까? 귀하의 의견으로는 모든 클라이언트에서 하나씩 필터링하는 것이 더 비쌉니까? – 4bottiglie