sqlite запрос на строку - PullRequest
       2

sqlite запрос на строку

0 голосов
/ 05 ноября 2011

Довольно новый для sqlite (и sql). Для каждой строки в таблице я хотел бы сделать запрос и добавить в другую таблицу. Мой текущий план состоит в том, чтобы извлечь все элементы в векторе <> и сделать вызов sqlite для каждого элемента в векторе <>. Можно ли это сделать с помощью одного оператора sqlite? в с / с ++. Заранее спасибо.

Редактировать: у меня есть идея сделать триггер на новой таблице. Для каждой новой добавленной строки триггер будет использовать ее для запроса этой строки.

Пример:

create table Persons(Id, FirstName, LastName);
create table ParentChildren(PersonsIdParent, PersonsIdChild);

Для каждого персонажа создайте список всех возможных дочерних элементов (например, одно и то же LastName) и добавьте в ParentChildren.

Ответы [ 2 ]

3 голосов
/ 05 ноября 2011

Да, вы можете делать такие вещи, не покидая базы данных:

insert into table1 (column11, column12, ...)
select column21, column22, ...
from table2
where ...

Запрос, который подается в INSERT, может быть настолько сложным, насколько это необходимо, если выбранные столбцы имеют правильные типы.


Теперь, когда мы знаем, как выглядят ваши таблицы, вам просто нужно присоединить Persons к себе:

insert into ParentChildren (PersonsIdParent, PersonsIdChild)
select p.Id, c.Id
from Persons p
join Persons c on p.LastName = c.LastName
where p.Id <> c.Id

Вы можете присоединить таблицу к себе, если используете уникальныепсевдонимы.Условие p.Id <> c.Id необходимо, чтобы не пытаться сделать кого-то своим ребенком.

1 голос
/ 05 ноября 2011

То, что вы просите, просто связывает каждого человека с каждым другим человеком того же самого Lastname (я исключил присоединение к одному себе):

INSERT INTO PersonsChildren
SELECT p.Id, c.id
FROM   Persons p
JOIN   Persons c USING (LastName)
WHERE  p.Id <> c.Id
ORDER  BY 1,2

Информация может быть получена в любое время с помощью SELECT запрос используется.Нет необходимости в избыточной записи в PersonsChildren.За исключением того, что есть еще проблема ..

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