全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1141
推到 Plurk!
推到 Facebook!

比對插入新資料

答題得分者是:christie
homeboy
一般會員


發表:11
回覆:11
積分:4
註冊:2007-11-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-11-28 16:50:36 IP:140.130.xxx.xxx 訂閱
小弟有一個問題想請教各位先進,小弟現在需要比對兩個資料表裡面的資料,salary和humall_mstr資料表,如果salary裡面沒有humall_mstr的資料再將humall_mstr資料插入salary裡面,小弟是先利用Query抓出humall_mstr的資料,再丟到salary裡面查詢,如果沒有再將資料插入salary,現在卡在如何傳回單筆查無humall_mstr資料?


with Query11 do //抓取humall_mstr資料
begin
close;
sql.clear;
sql.Add('select t_no,t_name,po_name1,po_name2,po_cd from humall_mstr');
open;
end;

while not Query11.Eof do
begin
with Query15 do //選擇salary內有humall_mstr的資料
begin
close;
sql.clear;
sql.Add('select * from salary where t_no=''' query11.fieldbyname('t_no').asstring '''');
open;
if query11. then //不知道要怎寫
begin
with Query16 do
begin;
close;
sql.clear;
sql.Add('insert into salary (T_NO,T_NAME,PO_CD,PO_NAME1,PO_NAME2)values(''' query11.fieldbyname('t_no').asstring ''',''' query11.fieldbyname('t_name').asstring ''',''' query11.fieldbyname('PO_CD').asstring ''',''' query11.fieldbyname('PO_NAME1').asstring ''',''' query11.fieldbyname('PO_NAME2').asstring ''')');
execsql;
end;
end;
end;
Query11.next;
end;
christie
資深會員


發表:30
回覆:299
積分:475
註冊:2005-03-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-11-28 18:46:04 IP:218.171.xxx.xxx 未訂閱

[code delphi]
while not Query11.Eof do
begin
//選擇salary內有humall_mstr的資料
Query15.close;
Query15.sql.clear;
Query15.sql.Add('select * from salary where t_no=''' query11.fieldbyname('t_no').asstring '''');
Query15.open;
if Query15.eof then // <------
begin
with Query16 do
begin
close;
sql.clear;
sql.Add('insert into salary (T_NO,T_NAME,PO_CD,PO_NAME1,PO_NAME2)values(''' query11.fieldbyname('t_no').asstring ''',''' query11.fieldbyname('t_name').asstring ''',''' query11.fieldbyname('PO_CD').asstring ''',''' query11.fieldbyname('PO_NAME1').asstring ''',''' query11.fieldbyname('PO_NAME2').asstring ''')');
execsql;
end;
end;

Query11.next;
end;

[/code]
或者

Insert Into salary (T_NO,T_NAME,PO_CD,PO_NAME1,PO_NAME2)
SELECT T_NO,T_NAME,PO_CD,PO_NAME1,PO_NAME2 FROM humall_mstr
where T_NO not in (select T_NO from salary)

------
What do we live for if not to make life less difficult for each other?
homeboy
一般會員


發表:11
回覆:11
積分:4
註冊:2007-11-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-11-29 10:43:38 IP:140.130.xxx.xxx 訂閱
感謝christie的指導,我利用
Insert Into salary (T_NO,T_NAME,PO_CD,PO_NAME1,PO_NAME2)
SELECT T_NO,T_NAME,PO_CD,PO_NAME1,PO_NAME2 FROM humall_mstr
where T_NO not in (select T_NO from salary)
如此就可以插入salary內資料了,又學了一招了。
編輯記錄
homeboy 重新編輯於 2007-11-29 10:44:09, 註解 無‧
系統時間:2024-05-02 11:06:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!