2015-04-01 102 views
0

我有一個在Azure SQL數據庫中正常工作的查詢,但我試圖在我的Android應用程序中使用它,但無法使其正常工作。這是爲了找到任何重疊的時間預訂。下面是一些虛擬的數據,到達的SQL查詢和離開都是整數:將SQL查詢轉換爲Android Azure移動服務查詢

Select * from bourguestMob.tableObjectBookings 
where tabObjID = 28 
and day = 30 
and month = 3 
and year = 2015 
and ((arrival <= 1600 and depart > 1600) 
or (arrival< 1800 and depart >= 1800)); 

使用移動服務提供的,我必須使用查詢,就像這樣:

tableObjectBookingsTable.where().field("tabObjID").eq(tables.get(i).getId()) 
.and().field("day").eq(day).and().field("month").eq(month).and().field("year").eq(year) 
.and().field("arrival").lt(intTime).or().field("arrival").eq(intTime).and().field("depart").gt(intTime) 

這就是我有部分,但我認爲查詢的某些部分需要嵌套才能正確評估。

回答

0

我想你想要的是改變你的查詢的結尾看起來像這樣:

.and(field("arrival").lt(intTime).or() 
    .field("arrival").eq(intTime).and().field("depart").gt(intTime)) 

它幫助我一下OData的字符串來檢查,如果你得到它的權利,來看看這裏對於一些複雜查詢的樣本:

https://github.com/Azure/azure-mobile-services/blob/master/sdk/android/test/sdk.testapp.tests/src/com/microsoft/windowsazure/mobileservices/sdk/testapp/test/MobileServiceQueryTests.java#L724