2015-10-10 64 views
2

如何在SQLite中連接三個表?我有三個表格,一個是Info,第二個是workForce,第三個是workDetails如何在SQLite中連接三個表?

表信息:id(PK),name,status,date,weather

表的員工:id1(PK), subContractors,noOfPeople,noOfHours

表WorkDetails:id2(PK),project,workDescription,TableInfo_id(FK) //contains multiple row

表信息

ID   NAME  Weather  Date  Status 
---------- ---------- ---------- ---------- ---------- 
    1   Paul  Sunny   15/10  MC 
    2   Allen  Rainy   15/10  Working 

表勞動力

ID1   SubContractors NoOfPeople  NoOfHours 
---------- -------------- ----------  ---------- 
1   AAA    2     2 
2   BBB    3     1 

表WorkDetails

ID2   Project  WorkDescription  TableInfo_id 
---------- ----------  --------------   ---------- 
1    A    B      1 
2              1 
3              1 
4              1 
5    C    D      2 
6              2 
7              2 
8              2 

假定名稱是保,因此,所有與ID 1和TableInfo_id 1行將被檢索。

這裏是我試過到目前爲止

public Cursor readEntry(String name) { 

     String selectQuery = ("SELECT Weather,Date,Status,SubContractors,NumberOfPeople,NumberOfHours,TimeIn,TimeOut FROM "+TABLE_INFO+TABLE_WORKFORCE+TABLE_WORKDETAILS+ "WHERE Name= ? AND"+ID=ID1+ "AND"+ID=TableInfo_id); 
     Cursor c = database.query(TABLE_INFO,TABLE_WORKFORCE,TABLE_WORKDETAILS,new String[]{id,name,weather,date,status,iD1,subcontractors,numberOfPerson,numberOfHours,id2project,workDescription,TableInfo_id},MyDatabaseHelper.Name+"=?", 
       new String[] { String.valueOf(name)}, null, null, null, null,null,null,null,null,null,null,null,null); 

     if (c != null) { 
      c.moveToFirst(); 
     } 
     return c; 

    } 

我的代碼好像不是working..how我能做到這一點?謝謝!

+0

任何建議將不勝感激 – John

+0

似乎有很多問題與您的SQLite查詢。應該嘗試記錄您的查詢並檢查錯誤。 –

+0

我不知道加入這些表..看起來很複雜.. – John

回答

1

你需要做的事情拳是增加表信息的外鍵表勞動力表勞動力的外鍵表WorkDetails

然後寫出修改您的查詢像這樣

Select * from Table Info tf 
LEFT JOIN Table WorkForce twf ON twf.tf_id = tf.id 
LEFT JOIN Table WorkDetails twd ON twd.tw_id = twf.id 

修改根據要求查詢加入三個表後。

查看添加外鍵的教程。

+1

那麼我應該如何將Table Info的外鍵添加到Table WorkDetails中? – John

+0

之間,\t 表中的ID WorkForce將始終與表Info中的ID相同...我是否還需要將Table Info的外鍵添加到Table workForce中? – John

+0

看,你有三張右邊的表,它們之間有一些親切的關係。現在,你想查詢從所有三個表中獲得相關或共同的結果?你會怎麼做?需要有一些通用名稱或ID,使用它們可以加入表格並編寫所需的查詢以獲取結果。 – Ritesh

0
  1. 到ID添加一個外鍵的員工表中的點信息表中
  2. SELECT * FROM信息內加入勞動力內部聯接Workdetails ON Info.ID = Wordforce.SOME_FOREIGN_KEY AND Info.ID = Workdetails。 TableInfo_id這裏NAME =「保羅」

認爲應該工作還沒有嘗試過壽