我使用Visual Studio Express 2012作为VB.net前端,使用Access 2010数据库作为后端,并使用ODBC系统DSN作为连接链接。
我有以下两个表及其各自的字段:
tblRepairRequest ([ID],[RequestType],[SubmitterFirstName],[SubmitterLastName],[SubmitterIDNumber],[DateSubmitted],[TimeSubmitted],[SupervisorFirstName],[SupervisorLastName],[SupervisorIDNumber] ],[PositionLocation],[ProblemDescription],[DateClosed],[TimeClosed],[Status])其中 [ID]是主键(数据库自动生成的数字)
tblRepairRequstNotes ([ID],[RepairRequestID],[NoteType],[UserFirstName],[UserLastName],[UserIDNumber],[DateNoted],[TimeNoted],[Notes])其中 [ID]是主键(数据库自动生成的数字),[RepairRequestID]是外键(来自tblRepairRequest的主键)
两个表之间存在1(tblRepairRequest)到多(tblRepairRequestNotes)的关系。
我创建了一个表单,其中表格中列出了这两个表中的所有字段。这将用于搜索数据库。用户输入数据的表单上的字段越多,搜索就越精确(在SQL语句中使用AND with LIKE)。
我不想向用户显示重复项。因此,假设查询运行,您将根据搜索条件获得以下内容:
来自tblRepairRequest匹配的-6条记录([ID] 1,2,3,4,5和6)
来自tblRepairRequestNotes匹配的-10条记录([RepairRequestID] 1,1,4,4,9,9,9,9,15,16)
这些应该合并,以便结果是1,2,3,4,5,6,9,15,16。由于组合结果本质上是来自tblRepairRequest的主键[ID],我想要用户从databridview中的tblRepairRequest中查看以下字段,作为这些组合结果中每个[ID]数字的搜索结果:
[ID],[RequestType],[SubmitterFirstName],[SubmitterLastName],[SubmitterIDNumber],[DateSubmitted],[TimeSubmitted],[DateClosed],[TimeClosed],[Status]
这样我可以让用户双击结果,然后我可以用新表格显示更多细节。
我需要帮助的是SQL语句。我只需要了解语句的基本格式是如何需要的。我假设会有连接,对于我的生活,我只是没有抓住。或者它可能需要以不同的方式完成,比如两个单独的查询,然后以某种方式将这些结果合并在一起,我真的不知道。我试着搜索,似乎没有什么对我想要做的事情,无论是我还是完全失去了(这很可能)。一旦我掌握了基本的查询结构,我就可以完成其余的工作。我将填写代码,根据用户填写的数据字段动态构建语句。我没有使用绑定源。我是通过使用数据适配器,数据集,数据视图和数据表的代码来完成的,然后在我的datagridview上设置source属性。
提前致谢
答案 0 :(得分:0)
根据建议,我使用了Access查询构建器来帮助我。我还找到了以下文章来帮助我:Use a union query to combine multiple queries into a single result。
这是生成的SELECT查询:
“ SELECT tblRepairRequests.ID,tblRepairRequests.RequestType,tblRepairRequests.SubmitterFirstName,tblRepairRequests.SubmitterLastName,tblRepairRequests.SubmitterIDNumber,tblRepairRequests.DateSubmitted,tblRepairRequests.TimeSubmitted,tblRepairRequests.DateClosed,tblRepairRequests.TimeClosed,tblRepairRequests。状态 FROM tblRepairRequests WHERE “&amp; strRepairRequestSearchCriteria&amp; “的 UNION选择 tblRepairRequests.ID,tblRepairRequests.RequestType,tblRepairRequests.SubmitterFirstName,tblRepairRequests.SubmitterLastName,tblRepairRequests.SubmitterIDNumber,tblRepairRequests.DateSubmitted,tblRepairRequests.TimeSubmitted,tblRepairRequests.DateClosed,tblRepairRequests.TimeClosed,tblRepairRequests.Status < strong> FROM tblRepairRequests INNER JOIN tblRepairRequestNotes ON tblRepairRequests.ID = tblRepairRequestNotes.RepairRequestID WHERE “&amp; strNotesSearchCriteria&amp;“;”
strRepairRequestSearchCriteria和strNotesSearchCriteria都是我根据用户填写的搜索字段编译的搜索条件。