2011-11-05 84 views
0

相當新的sqlite(和sql)。對於表中的每一行,我想進行查詢並追加到另一個表。我目前的計劃是提取矢量<>中的所有項目,並調用矢量<>中的每個項目的sqlite。這可以通過一個單一的SQLite語句來完成嗎?在c/C++中。 預先感謝您。每行sqlite查詢

編輯:我有一個想法是在新表上做一個觸發器。對於每個新添加的行,觸發器都會使用該行爲該行進行查詢。

實施例:

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

每個人,創建所有可能的子(例如相同名字)的列表,並加入到ParentChildren。

回答

3

是的,你可以做那種事不留數據庫:

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

因爲只要選定列有正確的類型需要的送入INSERT查詢可以爲複雜。


現在,我們知道你的表是什麼樣子,你只需要參加者本身:

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條件來避免試圖讓某人成爲自己的孩子。

+0

這部分回答。我仍然不知道我選擇的每行查詢的語法,比如table2。謝謝。 – jobobo

+0

@jobobo:也許你可以包括你的表格以及你想在你的問題中選擇什麼。 –

+0

我已經用Persons和ParentChildren示例更新了上面的問題。再次感謝你。 – jobobo

1

你所要求的每個人只是鏈接到同一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中沒有立即需要重複輸入的條目。除了更多的問題..