【问题标题】:Simple.Data - How to apply WHERE clauses to joined tablesSimple.Data - 如何将 WHERE 子句应用于连接表
【发布时间】:2015-10-20 02:51:08
【问题描述】:

我正在尝试使用 Simple.Data 作为我的 ADO,但我在尝试将连接几个表的查询放在一起时遇到了问题,然后根据以下条件过滤结果非主表中的值。

Scenario 是一个工作申请应用程序(但工作就像在给定日期完成的特定任务)。有 3 个相关表,jobsapplicationsapplication_historyjobs 表中的每条记录可以有多个applications,每个applications 可以有多个application_history 记录。在application_history 表中,有一个status 列,因为每个申请都被发送、提供并最终被接受。

所以我想要一个查询来返回所有已接受的未来工作申请;即jobs 表中的date 列在未来的位置,以及application_history 表中状态列为5 的关联记录的位置(表示已接受)。

如果这是普通的旧 SQL,我会使用以下查询:

从应用程序中选择 A.* 作为 A INNER JOIN application_history AS AH ON AH.application_id = A.id INNER JOIN 作业 AS J ON J.id = A.job_id WHERE AH.status_id = 3 AND J.date > date('now')

但我想知道如何使用 Simple.Data 实现相同的目标。对于奖励积分,如果您可以从忽略“工作必须在未来”这一步开始,这将有助于我了解发生了什么。

【问题讨论】:

    标签: sql simple.data


    【解决方案1】:

    作为参考:Simple.Data documentation 特别是关于显式连接的部分。 您应该能够执行以下操作:

    //db is your Simple.Data Database object
    
    db.application
      .Join(db.application_history)
      .On(db.application.id == db.application_history.application_id)
      .Join(db.job )
      .On(db.Applications.job_id == db.job.id)
      .Where(db.application_history.status_id == 3 && db.job.date > DateTime.Now());
    

    我不确定 Simple.Data 是否知道如何处理 Date 部分。

    【讨论】:

    • 谢谢,这是完美的答案。作为记录,日期比较工作得很好,但Where 子句应该使用&& 而不是AND
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 2015-04-27
    相关资源
    最近更新 更多