2010-05-27 3 views
0

У меня есть две таблицы в SQLite:извлечь столбцы из sqlite3

CREATE TABLE fruit ('fid' integer, 'name' text); 
CREATE TABLE basket ('fid1' integer, 'fid2' integer, 'c1' integer, 'c2' integer); 

корзины должны иметь счета c1 фруктов fid1 и c2 фруктов fid2

Я создал вид fruitbasket;

create view fruitbasket as select * from basket inner join fruit a on a.fid=basket.fid1 inner join fruit b on b.fid=basket.fid2; 

это работает (почти), как ожидалось.

Когда я типа

pragma table_info(fruitbasket); 

я получаю следующий вывод

0|fid1|integer|0||0 
1|fid2|integer|0||0 
2|c1|integer|0||0 
3|c2|integer|0||0 
4|fid|integer|0||0 
5|name|text|0||0 
6|fid:1|integer|0||0 
7|name:1|text|0||0 

Проблема заключается в том, что я не могу показаться, чтобы выбрать имя: 1. Как я могу это сделать, кроме как вернуться и повторно сгладить столбцы?

+0

Какой язык вы используете для доступа к базе данных? Вы только хотите вариант командной строки? – galford13x

+0

различные способы. Имеет ли значение доступ к имени: 1? –

+1

Почему не реалии столбцов? Почему это решение так плохо? Вы должны избегать выбора *, так что это было бы хорошей причиной, чтобы избавиться от него. Это сделает ваш код более понятным и позволит избежать проблемы, с которой вы сталкиваетесь. – Thomas

ответ

2

Используйте двойные кавычки, чтобы указать имена столбцов:

select "name:1" from fruitbasket; 

Вот пример:

sqlite> insert into fruit values (1,'apple'); 
sqlite> insert into fruit values (2,'pear'); 
sqlite> insert into basket values(1,2,3,4); 
sqlite> select "name:1" from fruitbasket; 
pear 
sqlite> 
+0

+1 Три ура для цитирования идентификатора. – pilcrow

+0

Дуг, большое спасибо за ответ на вопрос, который я задал. Я действительно ненавижу, когда люди пытаются ответить на что-то другое, чего я не спрашивал. Три ура для Дуга !!! –

Смежные вопросы