SQlite From предложение SELECT - PullRequest
       1

SQlite From предложение SELECT

0 голосов
/ 01 августа 2011

Мое требование - список таблиц в списке, при зацикливании списка необходимо получить имя таблицы android из таблицы отображения и вызвать имя этой таблицы:

см. Мой запрос:

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

Когда я запускаю этот запрос из браузера запросов, это не работает?Разве мы не можем использовать оператор select в предложении from?

  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 голосов
/ 01 августа 2011

Это должно быть возможно в виде запроса в форме

$stored_value = SELECT ToTable FROM RDSynchronisationControlHeader WHERE FromTable = 'RD.TransactionControl';

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

. Может работать или не работать как есть, SQL не моя сильная сторона.Однако функция кавычек способна превращать текст в идентификатор таблицы, что, как я полагаю, вам нужно.

0 голосов
/ 11 декабря 2014

Синтаксические диаграммы SQLite (www.sqlite.org) для оператора SELECT содержат путаницу между содержимым таблицы и именем таблицы.

Предположим, в вашей базе данных есть таблица с именем xxxx:

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

возвращает совершенно другой результат, чем

SELECT * FROM 'xxxx'

В первом операторе таблица-или-подзапрос - это то, что рассматривается как содержимое таблицы, во втором операторе таблица-или-подзапрос - это имя таблицы.

Так что вы должны сделать что-то вроде ответа Джоша. Запустите SQLite дважды, используя результат первого вызова для создания второго оператора SQL.

0 голосов
/ 01 августа 2011

Не большой парень SQLite, но в любой среде, в которой я работал, когда вы используете вложенный выбор, вы захотите, чтобы подзапрос был в скобках, например:

SELECT * FROM
    (
        SELECT ToTable
        FROM RDSynchronisationControlHeader 
        WHERE FromTable ='RD.TransactionControl'
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...