Имена столбцов SQLite без имени таблицы - PullRequest
3 голосов
/ 19 апреля 2011

При запросе базы данных в SQLite я считаю полезным указывать псевдоним для таблиц, с которыми я работаю.Это также помогает разрешать конфликты имен.

SELECT a._id, a.name, b.email FROM people AS a, emails AS b

Однако тогда, когда я ищу столбцы "_id", "name" и "email" в моем курсоре, я получаю сообщение об ошибке, что столбцы не могут быть найдены,Это работает, только если я изменю запрос на:

SELECT a._id AS "_id", a.name AS "name", b.email AS "email" FROM people AS a, emails AS b

Есть ли способ получить имя базового столбца без дополнительной работы?

Ответы [ 2 ]

2 голосов
/ 19 апреля 2011

Объявление псевдонима для столбца - лучший способ избежать ошибок.Две таблицы, которые вы запрашиваете, могут иметь одинаковые имена столбцов, и может быть трудно различить их без псевдонимов.Единственный способ различить их - связать их с именами таблиц или дать им псевдонимы.

Псевдонимы могут упростить запросы как для записи, так и для чтения.Вы можете присвоить таблице или столбцу другое имя, используя псевдоним.Это может быть полезно, если у вас очень длинные или сложные имена таблиц или столбцов

0 голосов
/ 19 апреля 2011

Из того, что я прочитал, похоже, что это проблема SQLite.

SQLite (в настоящее время) не создает обещания по поводу имен столбцов на
запросы, которые опускают предложение AS. Если Вы используете предложение AS, затем
имя столбца гарантированно будет ярлык справа от AS. Если вы
пропустите предложение AS, затем столбец имена могут измениться от одного выпуска SQLite к следующему.

http://old.nabble.com/Aliasing-and-columns-names-td18382558.html

Я бы рекомендовал использовать псевдоним таблицы только для столбцов, которые имеют конфликт. Например, в приведенном выше примере, если _id - единственный столбец с конфликтом, выполните:

SELECT a._id AS _id, name, email FROM people AS a, emails
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...