VB Asp.net将参数传递给子查询或更好的解决方案?

时间:2013-04-15 16:36:08

标签: asp.net sql database visual-studio-2010 ms-access

环境:Visual Basic Asp.net连接到Access数据库

好的,为我正在处理的数据库组合一个Select语句,我很难过。希望你们中的一个人能够提出解决方案!

Laying out the problem:
Table Name: CONTACTS
Field: ContactID (primary key, autonumber)
Field: UserName [this is being used to identify the user easily from Asp.net]

Table Name: APPLICANT
Field: ContactID (primary foreign)
Field: JobID (primary foreign)

Table Name: JOB
Field: JobID (primary key, autonumber)
Field: Description
Field: Class
Field: Type

我需要的是来自JOB的*他们尚未申请的工作。当他们申请工作时,它会被APPLICANT表中的ContactID和JobID的组合键反映出来。

我可以通过两个查询在Access中完成此任务:

SELECT Applicant.JobID
FROM Contacts INNER JOIN Applicant ON Contacts.[ContactID] = Applicant.[ContactID]
WHERE (((Contacts.UserName)='Test002'));

SELECT Job.JobID, Job.Description, Job.JobType, Job.JobClass
FROM Job LEFT JOIN [Applicant Query] ON Job.[JobID] = [Applicant Query].[JobID]
WHERE ((([Applicant Query].JobID) Is Null));

当[申请人查询]引用第一个查询时,当然。

现在,因为UserName用于识别用户,所以它必须包含在查询中,这就是困难所在。在Visual Studio中,我知道如何将参数传递给Select命令。但是,我似乎无法将参数传递给子查询。为了在我的解释中详尽无遗,'Test002'是我想要用参数替换的部分。

我希望你们知道一种方法来解决这个问题,或者,如果没有这种方法,那就是一种彻底解决问题的天才方法。提前感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:0)

如何使用子查询将其组合到单个查询中?它看起来像这样:

SELECT Job.JobID, Job.Description, Job.JobType, Job.JobClass
FROM Job 
LEFT JOIN (
  SELECT Applicant.JobID
  FROM Contacts INNER JOIN Applicant ON Contacts.[ContactID] = Applicant.[ContactID]
  WHERE ((Contacts.UserName)='Test002')) AS subqry
ON Job.[JobID] = [subqry].[JobID]
WHERE (([subqry].JobID) Is Null));

这是相同的逻辑,只使用一个查询而不是两个查询。