我正在尝试使用 Simple.Data 作为我的ADO,但是我遇到了一个问题,试图将一个连接几个表的查询放在一起,然后基于此过滤结果非主表中的值。
场景是一个作业应用程序应用程序(但作业就像在特定日期要完成的特定任务)。有3个相关表格,jobs
,applications
和application_history
。对于applications
表中的每条记录,可以有多个jobs
,对于每个application_history
,可以有多个applications
条记录。在application_history
表格中,每个应用程序都会被发送,提供并最终被接受。{/ p>
所以我想要一个返回所有未来作业的接受应用程序的查询;即status
表中的date
列在将来的位置,以及jobs
表中状态列为application_history
(意味着已接受)的相关记录。
如果这是普通的旧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实现相同的功能。对于奖励积分,如果您可以首先忽略“工作必须在将来”的步骤,这将有助于我了解正在发生的事情。
答案 0 :(得分: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
部分。