2015-10-10 142 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 =“保罗”

认为应该工作还没有尝试过寿