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

关于table合并

尚未結案
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-26 16:09:07 IP:218.20.xxx.xxx 未訂閱
请教前辈: 现在有两个table,一个是关于员工每天上下班打卡时间的记录table1(employee_no,current_date,type,start_time,end_time,work_hours),一个是关于员工加班,缺勤等情况的记录table2(employee_no,current_date,overtime_hours,pay_type_text),不知如何能将两个table合并起来,生成一个table3,将每个员工的上下班打卡时间及加班,缺勤等情况综合起来,生成完整的记录。 期待你的指教!希望能具体一些!谢谢!
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-26 16:43:31 IP:218.15.xxx.xxx 未訂閱
hi,liangzai
这样是不是您的要的
SELECT a.Serial1, a.Serial2, a.Id,b.Name
FROM table1 a
   LEFT OUTER JOIN table2 a
   ON  (a.Id = b.Id)  
将表a的全部选出,不论能否在表b找到相匹配的记录
示列如下:
先拉一个TQuery,执行上面代码,然后……    table1(id,Serial1,Serial2) 
       01 110     9101001
       03 111     9101002
       02 110     9102002
       04 115     9102003
table2(id,name)
       01 alex
       02 ad
       03 de
结果:
table3(id  name  Serial1, Serial2)
       01  alex  110     9101001
       02  ad    110     9102002
       03  de    111     9101002
       04        115     9102003    procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
begin
  Query1.Open;
  NewTable.open;
  Query1.first;
  for i:=0 to Query1.RecordCount-1 do 
    begin
      NewTable.Append; 
      NewTable.FieldByName('id').AsString:=Query1.fieldbyname('id').AsString; 
      NewTable.FieldByName('name').AsString:=Query1.fieldbyname('name').AsString;
      NewTable.FieldByName('Serial1').AsString:=Query1.fieldbyname('Serial1').AsString;
      NewTable.FieldByName('Serial2').AsString:=Query1.fieldbyname('Serial2').AsString;       
      NewTable.Post;
      Query1.Next;
    end;       
  NewTable.Free;
  query1.Free;  
end;    procedure TForm1.FormCreate(Sender: TObject);
begin
  NewTable:=TTable.Create(self);
  with NewTable do
  begin
    Close;
    TableName:='e:\Test.db';
    with FieldDefs do
      begin
        Clear;
        with AddFieldDef do
          begin
            Name := 'id';
            DataType := ftString;
            Size := 2;
          end;
        with AddFieldDef do
          begin
            Name := 'name';
            DataType := ftString;
            Size := 10;
          end;
        with AddFieldDef do
          begin
            Name := 'Serial1';
            DataType := ftString;
            Size := 3;
          end;
        with AddFieldDef do
          begin
            Name := 'Serial2';
            DataType := ftString;
            Size :=10;
          end;
       CreateTable;
      end;
    end;
end;
表数据可根据自己的情况自行调整~ 试试看 <>~~~静心养德~~~ 發表人 -
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-26 16:55:51 IP:218.167.xxx.xxx 未訂閱
先Create 一個New_Table 欄位 employee_no,current_date,type,start_time,end_time,work_hours, overtime_hours,pay_type_text insert into New_Table select a.*,b.overtime_hours, b.pay_type_text from Table1 a , Table2 b where a.employee_no=b.employee_no and a.current_date=b.current_date @瞭解越多.懂得越少@
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-27 11:50:50 IP:218.20.xxx.xxx 未訂閱
hi,deity! 首先感谢你的回应! 但是 这分别是table1(记录上下班打卡时间及年假,轮班替换等)和table2(加班及缺勤等)。其中最左边的field:ed是employee_no和current_date的组合,本想以它作为key. 你可以从中看出两个table仅仅用employee_no和current_date作为key还不足以将两个table进行join. 这是希望的table效果,然后再用quickreport作成报表。 这几天一直为这个问题困扰,希望得到你的指教!期待中。。。。谢谢!
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-27 11:57:47 IP:218.20.xxx.xxx 未訂閱
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-02 09:31:43 IP:218.20.xxx.xxx 未訂閱
希望的结果
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-02-02 09:48:55 IP:218.20.xxx.xxx 未訂閱
系統時間:2024-05-17 14:20:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!