Simple.Data - 如何将WHERE子句应用于连接表

时间:2015-10-20 02:51:08

标签: sql simple.data

我正在尝试使用 Simple.Data 作为我的ADO,但是我遇到了一个问题,试图将一个连接几个表的查询放在一起,然后基于此过滤结果非主表中的值。

场景是一个作业应用程序应用程序(但作业就像在特定日期要完成的特定任务)。有3个相关表格,jobsapplicationsapplication_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实现相同的功能。对于奖励积分,如果您可以首先忽略“工作必须在将来”的步骤,这将有助于我了解正在发生的事情。

1 个答案:

答案 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部分。