Simple.Data - 如何将 WHERE 子句应用于连接表
Simple.Data - How to apply WHERE clauses to joined tables
我正在尝试使用 Simple.Data 作为我的 ADO,但是我 运行 遇到了一个问题,试图组合一个连接的查询几个 tables,然后根据非主要 tables.
中的值过滤结果
Scenario 是一个工作申请应用程序(但工作就像是在给定的一天完成的特定任务)。有3个相关的table,jobs
,applications
和application_history
。 jobs
table 中的每条记录可以有很多 applications
,每个 applications
中有很多 application_history
条记录。在 application_history
table 中,有一个 status
列,表示每个申请已发送、提供并最终被接受。
所以我想要查询 returns 所有已接受的未来工作申请;即 jobs
table 中的 date
列在未来,application_history
table 中有关联记录,其中状态列为 5
(表示接受)。
如果这是普通的旧 SQL,我会使用这个查询:
SELECT A.* FROM application AS A
INNER JOIN application_history AS AH ON AH.application_id = A.id
INNER JOIN job AS J ON J.id = A.job_id
WHERE AH.status_id = 3 AND J.date > date('now')
但我想知道如何使用 Simple.Data 实现相同的目的。对于奖励积分,如果您可以先忽略 'job must be in the future' 这一步,那将有助于我了解发生了什么。
作为参考: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
部分。
我正在尝试使用 Simple.Data 作为我的 ADO,但是我 运行 遇到了一个问题,试图组合一个连接的查询几个 tables,然后根据非主要 tables.
中的值过滤结果Scenario 是一个工作申请应用程序(但工作就像是在给定的一天完成的特定任务)。有3个相关的table,jobs
,applications
和application_history
。 jobs
table 中的每条记录可以有很多 applications
,每个 applications
中有很多 application_history
条记录。在 application_history
table 中,有一个 status
列,表示每个申请已发送、提供并最终被接受。
所以我想要查询 returns 所有已接受的未来工作申请;即 jobs
table 中的 date
列在未来,application_history
table 中有关联记录,其中状态列为 5
(表示接受)。
如果这是普通的旧 SQL,我会使用这个查询:
SELECT A.* FROM application AS A INNER JOIN application_history AS AH ON AH.application_id = A.id INNER JOIN job AS J ON J.id = A.job_id WHERE AH.status_id = 3 AND J.date > date('now')
但我想知道如何使用 Simple.Data 实现相同的目的。对于奖励积分,如果您可以先忽略 'job must be in the future' 这一步,那将有助于我了解发生了什么。
作为参考: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
部分。