我在使用 Android 中的光标获取特定行时遇到问题。这是我的设置。我在一张表中有多行(~38000)(地理位置),另一张表中有大约 300 行(可用性)。
地理位置如下所示:_ID LATSTART LONSTART LATEND LONEND 可用性如下所示:ID MONTH_START MONTH_END DAY_START DAY_END PROHIBITTED_START PROHIBITTED_END PAID_START PAID_END
地理位置存储开始和结束地理点,可用性存储时间范围它们具有一对多的关系
该程序根据线的位置和时间绘制不同颜色的线我的问题是我正在运行三个不同的查询(禁止、免费、付费),但每个查询都是重叠的。
这是我对禁止行的查询
prohibQuery = "SELECT * " +
"FROM " +
"AVAILABILITY AS A JOIN ( SELECT * " +
"FROM GEOLOCATION " +
"WHERE ABS(LATSTART - (?) + LONSTART - (?)) < 2.3E-4 " +
"OR ABS(LATEND - (?) + LONEND - (?)) < 2.3E-4) AS G ON A.GEO_ID = G._ID " +
"WHERE (?) BETWEEN A.MONTH_START AND A.MONTH_END AND (?) BETWEEN A.DAY_START AND A.DAY_END " +
"AND A.PROHIB_START <= (?) AND A.PROHIB_END > (?) ";
这是我的“自由”行代码,问题是我将在同一个确切的位置有两条线,颜色重叠,所以它不会是绿色或红色,它将是任何组合(不是艺术家)。
Cursor mCursor = sqliteDb
.rawQuery(
"SELECT * "
+ "FROM GEOLOCATION, " +
prohibQuery +
"AS PROHIB "
+ "JOIN AVAILABILITY ON GEOLOCATION._ID=AVAILABILITY.GEO_ID "
+ "WHERE "
+ "((abs(LATSTART - (?)) + abs(LONSTART - (?))<2.3E-3) OR (abs(LATEND - (?)) + abs(LONEND - (?))<2.3E-3)) AND "
+ "((?) BETWEEN MONTH_START AND MONTH_END) AND ((?) BETWEEN DAY_START AND DAY_END) AND "
+ "((?)<PROHIB_START OR PROHIB_END<=(?)) GROUP BY GEO_ID "
+ "AND GEOLOCATION._ID <> PROHIB.ID"
顺便说一句,我没有包括的变量,它们只是当前值(即:位置、月份、日期、小时) 这里有一些行示例。
这些行在 GEOLOCATION._ID=AVAILABILITY.GEO_ID 上相关。
_ID NAME LATSTART LONSTART LATEND LONEND
2691 Alpine 45.477741 -73.655335 45.4763953 -73.6522115
2692 Alpine 45.4748043 -73.6486557 45.4762943 -73.652106
2693 Alpine 45.4744849 -73.6478719 45.4748043 -73.6486557
2694 Alpine 45.4741615 -73.6471631 45.4744849 -73.6478719
2695 Alpine 45.4738386 -73.6464376 45.4741615 -73.6471631
2696 Alpine 45.4743872 -73.6459077 45.4738386 -73.6464376
2697 Alpine 45.4743945 -73.645721 45.4743872 -73.6459077
2698 Alpine 45.4738146 -73.6444395 45.4743945 -73.645721
ID START END START END PROHIBSTART END PAIDSTART END GEO_ID
-38146 0 11 1 7 3 6 0 0 2691
-38155 0 11 1 7 9 17 0 0 2691
-38147 0 11 1 7 3 6 0 0 2692
-38148 0 11 1 7 3 6 0 0 2693
-38149 0 11 1 7 3 6 0 0 2694
-38150 0 11 1 7 3 6 0 0 2695
-38151 0 11 1 7 3 6 0 0 2696
-38156 0 11 1 7 0 24 0 0 2697
-38153 0 11 1 7 0 24 0 0 2698
-38154 0 11 1 7 0 24 0 0 2699