环境: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'是我想要用参数替换的部分。
我希望你们知道一种方法来解决这个问题,或者,如果没有这种方法,那就是一种彻底解决问题的天才方法。提前感谢您的时间和帮助。
答案 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));
这是相同的逻辑,只使用一个查询而不是两个查询。