Это звучит до смешного просто, но я пробовал так много разных подходов.Этот запрос просто настроен странно, и я пытаюсь присоединиться к нему, но нет общего столбца, с которым я могу это сделать.Однако существует столбец LastFirst (состоит из LastName, а затем FirstName), записанный в контексте DOE, JOHN.Затем в столбцах я пытаюсь присоединиться к этому, используя только FirstName (John) и LastName (Doe).
Я на самом деле пытаюсь выбрать данные из 4 таблиц, которые все возвращают 1 строку.Эти 2 таблицы могут быть объединены:
SELECT
RIFQuery.*,
_Employee.EmployeeLastName + ', ' + _Employee.EmployeeFirstName AS EmployeeLastFirst,
_Employee.EmployeeTitle, _Employee.Phone As EmployeePhone,
_Employee.EmailAddress As EmployeeEmailAddress
FROM
RIFQuery
INNER JOIN
_Employee ON RIFQuery.CreatedBy = _Employee.AutoNumber
WHERE
RIFQuery.Autonumber = 1
Эта таблица не имеет ничего общего, так что я, вероятно, объединю ее и оставлю пустыми столбцы:
SELECT *
FROM tblOrganization
Это таблица, которая содержитLastName и FirstName, которые я пытаюсь объединить с RIFQuery.LastFirst:
SELECT
Gender As ClientGender, DOB As ClientDOB, SSN As ClientSSN
FROM
_Clients
WHERE
_Clients.LASTNAME = left(RIFQuery.LastFirst, len(RIFQuery.LastFirst)-CHARINDEX(',', REVERSE(RIFQuery.LastFirst)))
AND _Clients.FIRSTNAME = ltrim(substring(RIFQuery.LastFirst, len(RIFQuery.LastFirst)-CHARINDEX(',', REVERSE(RIFQuery.LastFirst))+2, len(RIFQuery.LastFirst)))
В этом операторе WHERE код разделит столбец LastFirst и получит строку, выполнив поиск по их LastName и FirstName.Мне интересно, есть ли способ, которым я могу написать это в JOIN?В противном случае я могу, вероятно, объединить и обнулить оставшиеся столбцы, но это будет выглядеть ужасно.
ОБНОВЛЕНИЕ
Я попробовал 2 предложения здесь, и оба приведут к синтаксической ошибке.Я забыл упомянуть, что я выполняю этот код в Microsoft Access VBA и пытаюсь получить DAO.RecordSet.Мне пришлось удалить некоторые имена таблиц в операторе SELECT, чтобы избежать синтаксической ошибки, поэтому, возможно, мне следует обновить вопрос, чтобы отразить MS ACCESS, а не SQL Server, хотя только запрос является единственным чистым объектом Access, а остальныесвязанные таблицы ODBC с SQL Server.
ОБНОВЛЕНИЕ
Просто одна из тех проблем, когда я не могу спать, пока она не будет исправлена, и будет одержима, пока это не так.Если я уберу все ссылки _Employee (из операторов SELECT и JOIN), он захочет работать, но с ошибками из-за слишком малого количества параметров.Я только сейчас знаю, что это связано с _Employee.Получаю разные результаты от применения скобок и просто надеюсь, что мне повезет и я попаду в него.
Ошибка вызвана этой строкой:
INNER JOIN [_Employee] ON [_Employee].[AutoNumber] = [RIFQuery].[CreatedBy]
Я получаю эту ошибку: «Синтаксическая ошибка (отсутствует оператор) в выражении запроса».
Как видно из этогоснимок экрана: ![Error Screenshot](https://i.stack.imgur.com/qBxts.jpg)
Вот мой последний запрос, с которым я играю, за исключением скобок:
str = "SELECT [RIFQuery].*, " & vbCrLf & _
" ([_Employee].[EmployeeLastName] & ', ' & [_Employee].[EmployeeFirstName]) AS [EmployeeLastFirst], " & vbCrLf & _
" [_Employee].[EmployeeTitle], " & vbCrLf & _
" [_Employee].[Phone] AS [EmployeePhone], " & vbCrLf & _
" [_Employee].[EmailAddress] AS [EmployeeEmailAddress], " & vbCrLf & _
" [_Clients].[Gender] AS [ClientGender], " & vbCrLf & _
" [_Clients].[DOB] AS [ClientDOB], " & vbCrLf & _
" [_Clients].[SSN] AS [ClientSSN] " & vbCrLf & _
"FROM [_Clients] " & vbCrLf & _
" INNER JOIN [RIFQuery] ON [RIFQuery].[LastFirst] = [_Clients].[LASTNAME] & ', ' & [_Clients].[FIRSTNAME] " & vbCrLf & _
" INNER JOIN [_Employee] ON [_Employee].[AutoNumber] = [RIFQuery].[CreatedBy] " & vbCrLf & _
"WHERE [RIFQuery].[Autonumber] = 1;"
В целях отладки, если я удалю последние 2линии и операторы _Employee SELECT, он обработает запрос без проблем.Если у кого-то есть какие-либо идеи, просто дайте мне знать.
Я был сосредоточен на том, что заявление RIFQuery JOIN является виновником в течение долгого времени, но я обнаружил, что это просто не проблема.С учетом сказанного, эта тема была по существу решена, и я ценю помощь.