Java 如何在SQLite中连接三个表?

Java 如何在SQLite中连接三个表?,java,android,sqlite,outer-join,Java,Android,Sqlite,Outer Join,如何在SQLite中连接三个表?我有三个表,一个是Info,第二个是workForce,第三个是workDetails 表格信息:id(主键)、姓名、状态、日期、天气 表工作人员:id1(PK)、分包商、noOfPeople、noOfHours 表WorkDetails:id2(PK),项目,工作描述,TableInfo\u id(FK)//包含多行 表格信息 ID NAME Weather Date Status ----------

如何在SQLite中连接三个表?我有三个表,一个是
Info
,第二个是
workForce
,第三个是
workDetails

表格信息:
id(主键)、姓名、状态、日期、天气

表工作人员:
id1(PK)、分包商、noOfPeople、noOfHours

表WorkDetails:
id2(PK),项目,工作描述,TableInfo\u 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
假设名称是Paul,那么将检索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;

    }
我的代码似乎不起作用..我如何才能做到这一点?谢谢

  • 将外键添加到workforce表,并在info表中添加指向ID的点
  • 从Info.ID=Wordforce.SOME\u FOREIGN\u KEY和Info.ID=workdetals.TableInfo\u ID上的Info-internal-join-Workforce-inner-join-workdetals-ON-Info.ID=Wordforce.SOME\u-FOREIGN\u-KEY和Info.ID=workdetals.TableInfo\u-

  • 认为work应该没有尝试过,因为您需要做的第一件事是将表信息的外键添加到表工作人员中,将表工作人员的外键添加到表工作人员中

    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
    
    然后像这样修改查询

    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
    
    连接三个表后,根据需求修改查询


    查看有关添加外键的教程。

    任何建议都会非常有用。您的sqlite查询似乎存在许多问题。应该尝试记录查询并检查错误。我不知道如何加入这些表。。看起来很复杂..这是什么?问题是完全不同的请…我问的是如何在SQLite中连接多个表,而不是nullPointerException!那么我是否应该像我所做的那样将表信息的外键添加到表WorkDetails中?在这两者之间,表WorkForce中的ID将始终与表信息中的ID相同…我是否仍然需要将表信息的外键添加到表WorkForce中?看,您有三个表,它们之间有某种关系。现在,您想通过查询从所有三个表中获取相关或公共结果吗?你会怎么做?需要有一些公共名称或id,使用它们可以连接表并编写所需的查询以获得结果。