Проблема множественного правого соединения в Ms Access SQL, возвращает SYNTAX ERROR - PullRequest
0 голосов
/ 20 октября 2018

У меня есть некоторые проблемы с (я думаю) SQL.Я здесь не эксперт, но читал, что множественные объединения должны быть заключены в скобки, однако я просто не могу сделать эту работу.

Может быть, это даже не проблема, скорее всего, это из-за того, что я не до конца понимаю, что здесь происходит!Если бы кто-то мог сказать мне, какую глупость я тут сделал, это было бы здорово!

Когда я открываю форму, в которой список ссылается на этот запрос ComponentFinalHomeListboxQuery Я получаю:

"Синтаксическая ошибка (отсутствует оператор) в выражении запроса '[DatabaseComponentID] ='.

Список по-прежнему заполняется, но отображает ошибку до того, как каждая запись появится в списке.

Изменение соединения между ComponentMasterCostQuery.DatabaseComponentID и Components.MasterDatabasecomponentID справа налево исправляет ошибку, но не отображает нужные мне записи. Я пытаюсь отобразить все записи из таблицы Компоненты итолько те из ComponentMasterCostQuerywhere поля равны.

Когда пользователь добавляет компонент в базу данных, мне нужно, чтобы он появился в этом списке, чтобы они могли выбрать его и добавить другую связанную информацию, хранящуюся вдругие таблицы. После ввода этой информации ComponentMasterCostQuery вычисляет стоимость изготовлениякомпонент ComponentFinalHomeListboxQuery поднимает это значение и отображает стоимость в списке с элементом.

  • Компоненты - это главная таблица, содержащая все идентификаторы, имена и типы компонентов (взятые из таблицы ComponentTypes ).
  • ComponentTypes - это просто список типов, которым назначен каждый компонент.

Вот SQL-запрос из рассматриваемого вопроса:

SELECT
    ComponentMasterCostQuery.DatabaseComponentID
  , Components.KadComponentID
  , Components.ComponentName
  , ComponentTypes.Type
  , ComponentMasterCostQuery.PerPartMaterialCost
  , ComponentMasterCostQuery.OperationsCost
  , ComponentMasterCostQuery.TotalManufactureCost
FROM
    ComponentTypes
    RIGHT JOIN
        (ComponentMasterCostQuery
        RIGHT JOIN
            Components
        ON
            ComponentMasterCostQuery.DatabaseComponentID = Components.MasterDatabasecomponentID)
    ON
        ComponentTypes.ID = Components.ComponentType

Извиняюсь, если это что-то глупое, в поисках доступа к обучению на моих ошибках!

Спасибо за чтение, если вы получили это далеко!Райан

1 Ответ

0 голосов
/ 20 октября 2018

Вам не хватает =.Но псевдонимы облегчают написание и чтение запроса:

SELECT cmcq.DatabaseComponentID,  c.KadComponentID, c.ComponentName, ct.Type, 
       cmcq.PerPartMaterialCost, cmcq.OperationsCost, cmcq.TotalManufactureCost
FROM ComponentTypes as ct RIGHT JOIN
     (ComponentMasterCostQuery as cmcq RIGHT JOIN
      Components as c
      ON cmcq.DatabaseComponentID = c.MasterDatabasecomponentID
     )
     ON ct.ID = c.ComponentType;

Я очень предпочитаю LEFT JOIN.На самом деле я почти никогда не использую RIGHT JOIN с.Но я не изменил ваш запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...