SQlite From子句SELECT语句

时间:2011-08-01 04:49:44

标签: android sqlite

我的要求是列表中的表列表,当循环列表需要从映射表&获取android表名时称那个表名:

查看我的问题:

 SELECT * FROM SELECT ToTable  FROM RDSynchronisationControlHeader 
 WHERE FromTable ='RD.TransactionControl'  

当我从查询浏览器运行此查询时,这不起作用? 我们不能在from子句中使用select语句吗?

  private boolean isTableRecords(String tablename){
    DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(this);
    boolean recordStatus = false;
      try {
          dbAdapter.createDataBase();
     } catch (IOException e) {
          Log.i("*** select ",e.getMessage());
     }
     dbAdapter.openDataBase();
     String query = "SELECT * FROM SELECT ToTable FROM RDSynchronisationControlHeader WHERE FromTable ='?';";

     String[]d = new String[]{tablename};
     ArrayList stringList = dbAdapter.selectRecordsFromDBList(query, d);


     dbAdapter.close();

     ArrayList<Object> wmRouteList = new ArrayList<Object>();
     recordStatus =  stringList.size() >0 ? true : false;
    return recordStatus;
}

请帮帮我..

提前致谢

3 个答案:

答案 0 :(得分:0)

不是一个很大的SQLite人,但在我使用的任何环境中,当你使用子选择时,你都希望子查询在括号中,如:

SELECT * FROM
    (
        SELECT ToTable
        FROM RDSynchronisationControlHeader 
        WHERE FromTable ='RD.TransactionControl'
    )

答案 1 :(得分:0)

这应该可以作为

形式的查询
$stored_value = SELECT ToTable FROM RDSynchronisationControlHeader WHERE FromTable = 'RD.TransactionControl';

$final_value = SELECT * FROM quote($stored_value);

这可能会或可能不会起作用,SQL不是我的强项。但是,quote函数能够将文本转换为Table标识符,这是我认为你需要的。

答案 2 :(得分:0)

SELECT语句的SQLite语法图(www.sqlite.org)包含表的内容和表名之间的混淆。

假设您的数据库中有一个名为xxxx的表:

SELECT * FROM (SELECT tbl_name  FROM sqlite_master WHERE tbl_name = 'xxxx' AND Type='table');

返回的结果与

完全不同
SELECT * FROM 'xxxx'

在第一个语句中,table-or-subery被视为表的内容,在第二个语句中table-or--query是表的名称。

所以你必须做一些像Josh的回答。运行SQLite两次,使用第一次调用的结果来构造第二个SQL语句。