#sql #ms-access
Вопрос:
Я пытаюсь выполнить запрос объединения между двумя таблицами в моей базе данных, заявление, которое я написал, является
SELECT tblMetalsResults.reportno, tblMetalsResults.sampleno, tblMetalsResults.element, tblMetalsResults.ElementResult, tblMetalsResults.ElementRL, tblMetalsResults.ElementAnalyst1, tblMetalsResults.ElementAnalyst2, tblMetalsResults.ElementDate1, tblMetalsResults.ElementDate2, tblLogging.loBattery, tblLogging.loTest FROM tblLogging INNER JOIN tblMetalsResults ON tblLogging.ReportNo = tblMetalsResults.reportno WHERE (((tblMetalsResults.reportno)=[forms]![frmlogging]![reportno])) UNION SELECT tblHerbicideResults.herbreportno, tblHerbicideResults.sampleno, tblHerbicideResults.24DResults, tblHerbicideResults.D45TPResults, tbllogging.lobattery, tbllogging.lotest FROM tbllogging INNER JOIN tblHerbicideResults ON tbllogging.Reportno = tblHerbicideResults.herbreportno WHERE (((tblHerbicideResults.reportno0=[forms]![frmlogging]![reportno]));
Кто-нибудь знает, что я делаю не так? Это говорит о синтаксической ошибке в запросе объединения, когда я пытаюсь сохранить.
Комментарии:
1. Вам нужно иметь одинаковое количество полей в обоих
SELECT
s — у вас 11 в первом и всего 6 во втором. Начните с правильной работы каждой отдельной части запроса — возможно, вам потребуется заполнить фиктивные поля.2. Если нет соответствующего поля, используйте значение заполнителя или просто Null в этой позиции. Я использую Null. Кроме того, есть ли опечатка в публикации или это в фактическом запросе — во втором предложении WHERE:
.reportno0
.
Ответ №1:
обе стороны объединений должны иметь одинаковое количество столбцов и совместимые типы данных . если у вас нет этих столбцов , вы можете создать их как null
:
SELECT tblMetalsResults.reportno, tblMetalsResults.sampleno, tblMetalsResults.element, tblMetalsResults.ElementResult, tblMetalsResults.ElementRL, tblMetalsResults.ElementAnalyst1, tblMetalsResults.ElementAnalyst2, tblMetalsResults.ElementDate1, tblMetalsResults.ElementDate2, tblLogging.loBattery, tblLogging.loTest FROM tblLogging INNER JOIN tblMetalsResults ON tblLogging.ReportNo = tblMetalsResults.reportno WHERE (((tblMetalsResults.reportno)=[forms]![frmlogging]![reportno])) UNION SELECT tblHerbicideResults.herbreportno, tblHerbicideResults.sampleno, NULL, tblHerbicideResults.24DResults, tblHerbicideResults.D45TPResults, NULL, NULL, NULL, NULL, tbllogging.lobattery, tbllogging.lotest FROM tbllogging INNER JOIN tblHerbicideResults ON tbllogging.Reportno = tblHerbicideResults.herbreportno WHERE (((tblHerbicideResults.reportno0=[forms]![frmlogging]![reportno]));
Комментарии:
1. Это сработало! Огромное спасибо!