Android 如何在ORMLite中构建Select查询(更多没有联接的表)

Android 如何在ORMLite中构建Select查询(更多没有联接的表),android,sql,select,join,ormlite,Android,Sql,Select,Join,Ormlite,在ORMLite中查询此信息的最佳方式是什么 SELECT JOB.TASK_JOB, JOB.NAME_JOB, JOB_SETTINGS.DAY1, JOB_SETTINGS.DAY2, JOB_SETTINGS.DAY3, JOB_SETTINGS.DAY4, JOB_SETTINGS.DAY5, JOB_SETTINGS.

在ORMLite中查询此信息的最佳方式是什么

SELECT JOB.TASK_JOB,
            JOB.NAME_JOB,
            JOB_SETTINGS.DAY1,
            JOB_SETTINGS.DAY2,
            JOB_SETTINGS.DAY3,
            JOB_SETTINGS.DAY4,
            JOB_SETTINGS.DAY5,
            JOB_SETTINGS.DAY6,
            JOB_SETTINGS.DAY7,
            JOB_SETTINGS.HOURSPERWEEK,
            JOB_SETTINGS.PAYPERHOUR,
            JOB_SETTINGS.VARIABLEHOURS,
            WORKINGDAY.DATE_WD,
            WORKINGDAY.H_BREAK,
            WORKINGDAY.H_REAL,
            WORKINGDAY.H_IN,
            WORKINGDAY.H_OUT
        FROM JOB, JOB_SETTINGS,WORKINGDAY
        WHERE JOB.ID_JOB = JOB_SETTINGS.ID_JOB
        AND JOB_SETTINGS.ID_JOB = WORKINGDAY.ID_JOB
        AND JOB.ID_JOB = 2
我对每个表都有一个类(标准ORMLite),但我不知道如何构建这个查询

谢谢

编辑:

我写了这段代码,但实际上我无法继续,因为我对OrmLite语法感到困惑

DbHelperJob queryDao = new DbHelperJob(getActivity());

    QueryBuilder<Job, String> qJob = queryDao.getJobDao().queryBuilder();
    qJob.selectColumns("NAME_JOB", "TASK_JOB");

    QueryBuilder<JobSettings, String> qJobSett = queryDao.getJobSettDao().queryBuilder();
    qJobSett.selectColumns("DAY1", "DAY2", "DAY3", "DAY4", "DAY5", "DAY6", "DAY7", "HOURSPERWEEK", "PAYPERHOUR", "VARIABLEHOURS");

    QueryBuilder<WorkingDay, String> qWD = queryDao.getWDDao().queryBuilder();
    qWD.selectColumns("DATE_WD", "H_BREAK", "H_REAL", "H_IN", "H_OUT");
DbHelperJob queryDao=newdbhelperjob(getActivity());
QueryBuilder qJob=queryDao.getJobDao().QueryBuilder();
选择列(“名称作业”、“任务作业”);
QueryBuilder qJobSett=queryDao.getJobSettDao().QueryBuilder();
qJobSett.选择列(“第1天”、“第2天”、“第3天”、“第4天”、“第5天”、“第6天”、“第7天”、“每周小时数”、“每小时工资”、“可变小时数”);
QueryBuilder qWD=queryDao.getWDDao().QueryBuilder();
qWD.selectColumns(“DATE_WD”、“H_BREAK”、“H_REAL”、“H_IN”、“H_OUT”);

Android查询具有以下参数:

  • -我们要获取的字段列表
  • 选择-条件所在的字符串
  • SelectionAgs-用于
  • 选择。在选择中,您可以使用“?”并将被这些值替换
  • 分组依据-分组
  • 具有使用聚合函数的条件
  • 排序依据-排序

  • 使用它。

    这与ORMLite无关,但SQLiteQueryBuilder中有一个非常方便的查询工具。您可以这样做:

    private static final String COLS = new String[] {
        JOB.TASK_JOB,
        JOB.NAME_JOB,
        JOB_SETTINGS.DAY1,
        JOB_SETTINGS.DAY2,
        JOB_SETTINGS.DAY3,
        JOB_SETTINGS.DAY4,
        JOB_SETTINGS.DAY5,
        JOB_SETTINGS.DAY6,
        JOB_SETTINGS.DAY7,
        JOB_SETTINGS.HOURSPERWEEK,
        JOB_SETTINGS.PAYPERHOUR,
        JOB_SETTINGS.VARIABLEHOURS,
        WORKINGDAY.DATE_WD,
        WORKINGDAY.H_BREAK,
        WORKINGDAY.H_REAL,
        WORKINGDAY.H_IN,
        WORKINGDAY.H_OUT
    }
    
    private static String SEL =
        "JOB.ID_JOB = JOB_SETTINGS.ID_JOB"
            + "AND JOB_SETTINGS.ID_JOB = WORKINGDAY.ID_JOB"
            + "AND JOB.ID_JOB = 2"
    
    private static String TABLES = "JOB, JOB_SETTINGS, WORKINGDAY""
    
    
    // in the query method...
        db.execSQL(
            SQLiteQueryBuilder.buildQueryString(
                false, TABLES, COLS, SEL, null, null, null, null);
    
    您可以使用Dao的queryRaw()方法。比如说

    GenericRawResults<String[]> rawResults = queryDao.queryRaw("SELECT JOB.TASK_JOB,
                    JOB.NAME_JOB,
                    JOB_SETTINGS.DAY1,
                    JOB_SETTINGS.DAY2,
                    JOB_SETTINGS.DAY3,
                    JOB_SETTINGS.DAY4,
                    JOB_SETTINGS.DAY5,
                    JOB_SETTINGS.DAY6,
                    JOB_SETTINGS.DAY7,
                    JOB_SETTINGS.HOURSPERWEEK,
                    JOB_SETTINGS.PAYPERHOUR,
                    JOB_SETTINGS.VARIABLEHOURS,
                    WORKINGDAY.DATE_WD,
                    WORKINGDAY.H_BREAK,
                    WORKINGDAY.H_REAL,
                    WORKINGDAY.H_IN,
                    WORKINGDAY.H_OUT
                FROM JOB, JOB_SETTINGS,WORKINGDAY
                WHERE JOB.ID_JOB = JOB_SETTINGS.ID_JOB
                AND JOB_SETTINGS.ID_JOB = WORKINGDAY.ID_JOB
                AND JOB.ID_JOB = 2")
    
    GenericRawResults rawResults=queryDao.queryRaw(“选择JOB.TASK\u作业,
    JOB.NAME\u JOB,
    JOB_SETTINGS.DAY1,
    JOB_SETTINGS.DAY2,
    作业设置。第3天,
    作业设置。第4天,
    作业设置第5天,
    作业设置。第6天,
    作业设置。第7天,
    JOB_SETTINGS.hours每周,
    作业设置。每小时工资,
    作业设置。可变工时,
    工作日日期,
    工作日休息,
    工作日,
    工作日,
    工作日
    从作业、作业设置、工作日
    其中JOB.ID\u JOB=JOB\u SETTINGS.ID\u JOB
    和JOB_SETTINGS.ID_JOB=WORKINGDAY.ID_JOB
    和JOB.ID_JOB=2”)
    

    请在此阅读更多内容

    谢谢您的回复!但我会用OrmLite构建这个查询……事实上,我正在用这个库编写一个Android应用程序!:)有什么解决办法吗?是的。。。。我非常反对ORM,尤其是在Android中。如果你真的必须做ORM,我想你会在这里找到你需要的答案:。您正在进行3路连接,这可能需要进行一些调整。。。这是我试图避免ORM的原因之一。。。很幸运,但在奥姆利特有一个不同的辛塔克斯,我对此感到非常困惑…谢谢!它工作!!!非常感谢你!!我会加上+1的答案,但我没有一个最低的声誉得分!谢谢