android 中的 SQLite 查询有问题
Trouble with SQLite query in android
我有一个带有两个 viewType 的 listView。对于第一个 viewType,我从一个 SQLite table 获取数据,对于其他的 - 从另一个 table。我正在使用内部连接像这样连接这两个 table:
static {
sProfileWithHobbiesBuilder = new SQLiteQueryBuilder();
sProfileWithNewsBuilder.setTables(
UsersInfoEntry.TABLE_NAME + " INNER JOIN " +
HobbiesEntry.TABLE_NAME + " ON " +
HobbiesEntry.TABLE_NAME + "." + HobbiesEntry.USER_ID + " = " +
UsersInfoEntry.TABLE_NAME + "." + UsersInfoEntry.USER_ID);
}
一切正常,但是...
如果第二个 table 为空,则 getColumnCounts return 0 然后什么都不显示...
如果我需要下一个结果:如果第二个 table 为空,则只显示第一个 viewType 的信息...
我很乐意解决这个问题!
您可以使用 LEFT OUTER JOIN
而不是 INNER JOIN
。 LEFT OUTER JOIN
将保留第一个 table 的列,即使第二个 table 无法连接到指定的连接列(因为没有匹配的记录)。
http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html#setTables(java.lang.String) 甚至显示了 LEFT OUTER JOIN
.
的示例
我有一个带有两个 viewType 的 listView。对于第一个 viewType,我从一个 SQLite table 获取数据,对于其他的 - 从另一个 table。我正在使用内部连接像这样连接这两个 table:
static {
sProfileWithHobbiesBuilder = new SQLiteQueryBuilder();
sProfileWithNewsBuilder.setTables(
UsersInfoEntry.TABLE_NAME + " INNER JOIN " +
HobbiesEntry.TABLE_NAME + " ON " +
HobbiesEntry.TABLE_NAME + "." + HobbiesEntry.USER_ID + " = " +
UsersInfoEntry.TABLE_NAME + "." + UsersInfoEntry.USER_ID);
}
一切正常,但是... 如果第二个 table 为空,则 getColumnCounts return 0 然后什么都不显示... 如果我需要下一个结果:如果第二个 table 为空,则只显示第一个 viewType 的信息...
我很乐意解决这个问题!
您可以使用 LEFT OUTER JOIN
而不是 INNER JOIN
。 LEFT OUTER JOIN
将保留第一个 table 的列,即使第二个 table 无法连接到指定的连接列(因为没有匹配的记录)。
http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html#setTables(java.lang.String) 甚至显示了 LEFT OUTER JOIN
.