【问题标题】:Cursor JOIN with same column name具有相同列名的光标 JOIN
【发布时间】:2014-02-23 02:14:15
【问题描述】:

如何访问同名的列?我尝试过cursor.getString(cursor.getColumnIndexOrThrow("table.column")),但它似乎不起作用

【问题讨论】:

  • 当你进行连接时,使用别名作为列名并确保它在投影中。
  • 我正在为这个使用 rawQuery。也使用别名并尝试了 Alias.column_name;还是不行

标签: android android-cursor


【解决方案1】:

你可以使用别名,即

db.rawQuery("SELECT column1 AS c1 FROM table");

那么你可以使用:

cursor.getColumnIndex("c1");

显然这同样适用于来自 JOIN 的字段。 干杯。

编辑

连接子句示例:

db.rawQuery("SELECT t1.columnX AS c1, t2.columnY as c2 FROM table1 t1 INNER JOIN table2 t2 ON t1.A = t2.B");

那么无论它属于哪个表,你都可以简单地使用别名:

cursor.getColumnIndex("c2") should return 1.

【讨论】:

  • 我想做类似SELECT Course.image, Student.image FROM courses as Course join students as Student..... 然后使用cursor.getColumnIndex("Course.index"); 这可能吗?
  • 使用“索引”,不使用“课程”。前缀,它的工作原理。您需要 getColumnIndex() 的列别名才能使用与实际表名不同的列名。
  • 您好,我已经在 2 个表中应用了 InnerJoin,第一个表中的主键列在第二个表中是外键。第二个表有 3 行与我设法进行 rawquery 的外键关联,但不知道如何读取游标在一个查询中具有来自第一个表的 1 行和来自第二个表的 3 行。
  • @MuhammadBabar 和上面的例子有什么不同?
  • 不同的是,我的表 A 具有 user_id (PK),而表 B 具有 user_id(FK),主题。表 A 与表 B 有 one-to-many 关系。例如,表 A 正好有一行,而表 B 有 3 行。因此,当我使用连接时,我现在得到一个游标,我不确定如何在一次迭代中读取数据 1 行(表 a)+ 3 行(表 b)!
猜你喜欢
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 2014-12-23
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多