如何在SQLite中连接三个表?

3
如何在SQLite中连接三个表?我有三个表,一个是Info,第二个是workForce,第三个是workDetails
表信息:id(PK),name,status,date,weather 工作力量表:id1(PK),子承包商,人数,小时数 工作详细信息表:id2(PK),项目,工作描述,TableInfo_id(FK)//含多行 表信息
  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

工作细节表

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

假设“name”是保罗,那么所有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;

    }

我的代码似乎不起作用了,我该怎么做才能实现它?谢谢!


似乎你的sqlite查询存在许多问题。应该尝试记录查询并检查错误。 - Rahul Tiwari
我不知道如何连接这些表格... 看起来很复杂... - John
请查看此链接:http://www.tutorialspoint.com/sqlite/sqlite_using_joins.htm - Rahul Tiwari
@CL。我的结果出现错误,没有得到异常,我的应用程序也没有崩溃。 - John
那么你还没有展示你实际使用的代码。 - CL.
显示剩余3条评论
2个回答

2

首先你需要将信息表(Table Info)的外键添加到员工表(Table WorkForce)中,然后将员工表(Table WorkForce)的外键添加到工作明细表(Table 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
那我应该像我所做的那样,在表WorkDetails中添加一个指向表Info的外键吗? - John
在表WorkForce中,ID始终与表Info中的ID相同...我是否仍需要将表Info的外键添加到表WorkForce中? - John
看,你有三张表,它们之间存在某种关系。现在,你想查询从这三张表中获取相关或共同的结果?你该怎么做呢?需要一些共同的名称或ID,使用它们可以连接这些表并编写所需的查询以获取结果。 - Ritt

0
  1. 在工作人员表中添加一个外键,指向信息表中的ID
  2. select * from Info inner join Workforce inner join Workdetails ON Info.ID = Wordforce.SOME_FOREIGN_KEY AND Info.ID = Workdetails.TableInfo_id Where NAME = 'Paul'

我认为这应该可以工作,但还没有尝试过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接