2014-02-02 4 views
0

Я использую Visual Studio Express 2012 для front-end VB.net и базу данных Access 2010 для внутреннего сервера с DSN системы ODBC в качестве ссылки соединения.Запросить две таблицы и отобразить комбинированные результаты без дубликатов

у меня есть следующие две таблицы с их соответствующими полями:

tblRepairRequest ([ID], [ТипЗапроса], [SubmitterFirstName], [SubmitterLastName], [SubmitterIDNumber], [DateSubmitted], [TimeSubmitted] , [SupervisorFirstName], [SupervisorLastName], [SupervisorIDNumber], [PositionLocation], [ProblemDescription], [DateClosed], [TimeClosed], [Status]) Где [ID] - первичный ключ (автоматически сгенерированный номер по базе данных)

tblRepairRequstNotes ([ID], [RepairReq uestID], [NoteType], [UserFirstName], [UserLastName], [UserIDNumber], [DateNoted], [TimeNoted], [Notes]) Где [ID] - первичный ключ (автоматически сгенерированный номер по базе данных) и [RepairRequestID] - это внешний ключ (первичный ключ от tblRepairRequest)

Между двумя (tblRepairRequestNotes) отношением 1 (tblRepairRequest) к множеству (tblRepairRequestNotes).

Я создал форму со всеми полями в этих двух таблицах, выложенными на форме. Это будет использоваться для поиска в базе данных. Чем больше полей формы, в которую пользователь вводит данные, тем более изысканный поиск будет получен (используя AND с LIKE в SQL-заявлении).

Я не хочу показывать дубликаты пользователю. Так скажем, пробеги запроса, и вы получите следующие на основе критериев поиска:

-6 записей из tblRepairRequest согласованного ([ID] 1, 2, 3, 4, 5, & 6)

-10 записи из tblRepairRequestNotes соответствуют ([RepairRequestID] 1, 1, 4, 4, 4, 9, 9, 9, 15, 16)

Их следует комбинировать так, чтобы результаты были 1, 2, 3, 4, 5 , 6, 9, 15, 16. Поскольку объединенные результаты по сути являются моим основным ключом [ID] из tblRepairRequest, я хочу, чтобы пользователь видел следующие поля из tblRepairRequest в datagridview в качестве результатов поиска для каждого из [ID ] из этих комбинированных результатов:

[ID], [RequestType], [SubmitterFirstName], [SubmitterLastName], [SubmitterIDNumber], [DateSubmitted], [TimeSubmitted], [DateClosed], [TimeClosed], [Статус]

Таким образом, я может потребовать, чтобы пользователь дважды щелкнул результат, а затем я могу показать более подробную информацию в новой форме.

Мне нужна помощь с инструкциями SQL. Мне просто нужно понять, каким должен быть базовый формат заявления (ов). Я предполагаю, что будут объединения, которые для жизни меня я просто не понимаю. Или, возможно, это нужно сделать по-другому, как два отдельных запроса, а затем каким-то образом объединить эти результаты, я действительно не знаю. Я пробовал искать, и ничто не казалось правильным для того, что я пытаюсь сделать, либо это, либо я просто полностью потерян (что очень хорошо может быть). Как только у меня возникнет основная структура запроса, я могу получить все остальное. Я буду заполнять код, чтобы динамически строить оператор на основе того, какие поля данных заполняются пользователем. Я не использую источник привязки. Я делаю это с помощью кода с использованием адаптеров данных, наборов данных, представлений данных и таблиц данных, а затем я устанавливаю свойство source в своем datagridview.

Заранее спасибо

+2

вы можете создавать запросы в доступе визуально, а затем переводить SQL в свой код; или у него также есть Мастер, который поможет их построить, пока у вас не появится представление о том, что вы хотите или с чего начать. – Plutonix

+0

Большое спасибо @Plutonix за ваш комментарий. Я не знаю, почему я не думал об использовании построителя запросов в Access, чтобы помочь мне. Я работаю над этим сегодня и думаю, что понял это. Еще раз спасибо. – Jeremy

ответ

0

Как было предложено, я использовал Access конструктор запросов, чтобы помочь мне. Я также нашел следующую статью, чтобы помочь мне: Use a union query to combine multiple queries into a single result.

Это полученный запрос на выборку:

"ВЫБОР tblRepairRequests.ID, tblRepairRequests.RequestType, tblRepairRequests.SubmitterFirstName, tblRepairRequests.SubmitterLastName, tblRepairRequests.SubmitterIDNumber, tblRepairRequests.DateSubmitted, tblRepairRequests.TimeSubmitted, tblRepairRequests.DateClosed , tblRepairRequests.TimeClosed, tblRepairRequests.Status ОТ tblRepairRequests ГДЕ "& strRepairRequestSearchCriteria &" СОЕДИНЕНИЕ ВЫБОР tblRepairReq uests.ID, tblRepairRequests.RequestType, tblRepairRequests.SubmitterFirstName, tblRepairRequests.SubmitterLastName, tblRepairRequests.SubmitterIDNumber, tblRepairRequests.DateSubmitted, tblRepairRequests.TimeSubmitted, tblRepairRequests.DateClosed, tblRepairRequests.TimeClosed, tblRepairRequests.Status ОТ tblRepairRequests INNER JOIN tblRepairRequestNotes НА tblRepairRequests.ID = tblRepairRequestNotes.RepairRequestID ГДЕ "& strNotesSearchCriteria &"; "

Оба strRepairRequestSearchCriteria и strNotesSearchCriteria - это мои скомпилированные критерии поиска, основанные на том, какие поля поиска заполняются пользователем.

Смежные вопросы