2011-08-01 128 views
0

我的要求是表的清單列表,循環列表需要從映射表&調用表名了android表名時:SQlite的From子句SELECT語句

看到我的查詢:

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; 
} 

請幫助我..

在此先感謝

+0

明確的問題帶來更快的答案。所以你需要一個查詢,將從列表中選擇名稱的列表中選擇? – Rasel

回答

0

不是一個大的SQLite的人,但在我工作中,當你使用一個子選擇的任何環境中,你會希望子查詢是在括號中,如:

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

我也嘗試過這樣。 '選擇ToTable FROM RDSynchronisationControlHeader WHERE FromTable = 'RD.TransactionControl''這回表名,samething當我這樣調用'SELECT * FROM ( 選擇ToTable FROM RDSynchronisationControlHeader WHERE FromTable =' RD.TransactionControl」 ) '這個也返回表名,這意味着返回子查詢結果.. – Piraba

+0

我明白了 - 我一開始並不理解你的問題。我認爲你的子查詢會返回一個表名,並且你想從該表中做一個'SELECT *'。無論你如何完成這個任務,這將會是兩個疑問 - 不能只用一個來完成。你將不得不運行你的第一個查詢來獲取表名,然後建立你的SQL語句來運行真正的查詢。即使在存儲了特效的環境中,也可以在proc中動態構建語句,但仍會觸發兩個查詢。但是既然你在SQLite中,反正它是沒有意義的。 –

+0

你的假設是正確的.subquery返回表名,我需要從該表做一個SELECT *。有一個查詢我不能這樣做... – Piraba

0

這應該是儘可能在

0123表格查詢

這可能會也可能不會,因爲SQL不是我的特長。但是,引用函數能夠將文本轉換爲表格標識符,這是我相信您需要的。

+0

我想在一個查詢中執行,這就是爲什麼我試圖這樣 – Piraba

+0

此外,'$ stored_value','$ final_value'變量是PHP風格。確保你改變了。我正在研究一個大的PHP,Actionscript,SQL項目,而PHP風格是潛意識的。 – Josh

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' 

在第一條語句的表或-子查詢的東西當成一個表的內容,在第二個語句中,表或子查詢是表名。

所以你必須做一些像喬希的回答。運行SQLite兩次,使用第一次調用的結果構造第二個SQL語句。