Страница 1 из 1
Представление в sqlite с использованием INSERT INTO
Добавлено: 26 мар 2013, 21:47
SS_Rebelious
Есть две таблицы в базе SQLite, имеющие пару общих по содержанию атрибутов Name и Area. Хочу сделать представление, которое бы объединяло соответствующие колонки обеих таблиц. Однако, SQLite не хочет использовать INSERT INTO для подзапроса. Вот релевантная часть запроса:
Код: Выделить всё
INSERT INTO (SELECT Name, Area FROM table1)
SELECT Name, Area FROM table2
SQLite ругается на скобку "(". Если скобки убрать, ругается на SELECT. Если (SELECT Name, Area FROM table1) сдедлать временной таблицей, то INSERT INTO работает.
Re: Представление в sqlite с использованием INSERT INTO
Добавлено: 27 мар 2013, 05:58
trir
Код: Выделить всё
INSERT INTO table1
SELECT Name, Area FROM table2
для остальных полей добавь дефаултные значения, в нужном порядке
Re: Представление в sqlite с использованием INSERT INTO
Добавлено: 27 мар 2013, 19:04
SS_Rebelious
trir писал(а):Код: Выделить всё
INSERT INTO table1
SELECT Name, Area FROM table2
для остальных полей добавь дефаултные значения, в нужном порядке
Да, если INSERT INTO скармливать уже созданную таблицу, то работает, но в table1 есть ещё куча других полей, которые мне в представлении совершенно не нужны, поэтому я и пытаюсь использовать подзапрос для того чтобы выдернуть только нужные мне поля. Ещё идеи есть?
Re: Представление в sqlite с использованием INSERT INTO
Добавлено: 28 мар 2013, 10:11
trir
Код: Выделить всё
INSERT INTO table1
SELECT null, Name, null, Area, null, null FROM table2
Re: Представление в sqlite с использованием INSERT INTO
Добавлено: 28 мар 2013, 20:06
SS_Rebelious
В общем, вот такое я пытаюсь сотворить:
Код: Выделить всё
CREATE VIEW summary AS
INSERT INTO (SELECT Name, SUM(Area) FROM table1 GROUP BY Name)
SELECT *
FROM (SELECT Name, SUM(Area) FROM table2 GROUP BY Name)
В ответ я получаю
. Я пробовал различные варианты, но видимо, представления не хотят создаваться с помощью INSERT INTO, а сама команда INSERT INTO работает только с уже созданными таблицами (имеющими имя). Может есть альтернативный способ получить нужное представление?
Re: Представление в sqlite с использованием INSERT INTO
Добавлено: 29 мар 2013, 23:51
SS_Rebelious
В общем, вместо INSERT INTO надо использовать UNION ALL.
Код: Выделить всё
CREATE VIEW summary AS
SELECT Name, SUM(Area) AS Area
FROM table1
GROUP BY Name
UNION ALL
SELECT Name, SUM(Area)
FROM table2
GROUP BY Name ;
Re: Представление в sqlite с использованием INSERT INTO
Добавлено: 30 мар 2013, 09:04
trir
Код: Выделить всё
CREATE VIEW summary AS
SELECT Name, SUM(Area) AS Area
FROM table1
GROUP BY Name
UNION ALL
SELECT Name, SUM(Area) [b]AS Area[/b]
FROM table2
GROUP BY Name ;
View это просто способ сохранить запрос select
Re: Представление в sqlite с использованием INSERT INTO
Добавлено: 30 мар 2013, 12:25
SS_Rebelious
Я запостил финальное работающее выражение. AS Area в UNION ALL избыточно.