Вложенные операторы в sqlite - PullRequest
       22

Вложенные операторы в sqlite

0 голосов
/ 13 февраля 2010

Я использую библиотеку sqlite3 в c ++ для запроса базы данных из файла * .sqlite. Вы можете написать оператор запроса в sqlite3 как:

char* sql = "select name from table id = (select full_name from second_table where column = 4);"

Второй оператор должен возвращать идентификатор, чтобы завершить оператор запроса первым оператором.

Ответы [ 2 ]

2 голосов
/ 13 февраля 2010

Да, можете, просто убедитесь, что вложенный запрос не возвращает более одной строки. Добавьте LIMIT 1 в конец вложенного запроса, чтобы исправить это. Также убедитесь, что он всегда возвращает строку, иначе основной запрос не будет работать.

Если вы хотите сопоставить несколько строк во вложенном запросе, вы можете использовать либо IN, например:

char* sql = "select name from table WHERE id IN (select full_name from second_table where column = 4);"

или вы можете использовать JOIN:

char* sql = "select name from table JOIN second_table ON table.id = second_table.full_name WHERE second_table.column = 4"

Обратите внимание, что метод IN может быть очень медленным, и что JOIN может быть очень быстрым, если индексировать по правым столбцам

1 голос
/ 16 февраля 2010

В sidenote вы можете использовать SQLiteadmin (http://sqliteadmin.orbmu2k.de/) для просмотра базы данных и выполнения запросов непосредственно в ней (полезно для тестирования и т.д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...