Проблема с доступом: не получен требуемый вывод при построении отчета - PullRequest
0 голосов
/ 11 мая 2011

Я создал отчет в Access и написал запрос на выборку записей из несколько таблиц следующим образом:

SELECT BuildingDetails.*, Contractors.Item, ActionDetails.ActionType
FROM Contractors 
INNER JOIN (BuildingDetails 
    INNER JOIN (ActionDetails 
        INNER JOIN DormData ON ActionDetails.ActionID = DormData.ActionID) 
    ON BuildingDetails.BuildingID = DormData.BuildingID) 
ON Contractors.ID = DormData.ItemID;

Теперь я хочу получить только actiontype=repair или actionid=1 по запросу. У нас есть два actontype «ремонта» и «замены».

Ответы [ 3 ]

1 голос
/ 11 мая 2011

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

SELECT BuildingDetails.*, 
Contractors.Item, 
ActionDetails.ActionType 
FROM Contractors 
INNER JOIN DormData ON Contractors.ID = DormData.ItemID
INNER JOIN ActionDetails ON DormData.ActionID = ActionDetails.ActionID
INNER JOIN BuildingDetails ON DormData.BuildingID = BuildingDetails.BuildingID
WHERE ActionDetails.ActionType = 'Repair' OR ActionID=1

Если ActionID - это столбец поиска, который связывает ActionID (1) сActionType ('Repair'), тогда вам не нужно или, и вы можете придерживаться одного или других условий в предложении WHERE.

Надеюсь, это поможет.

0 голосов
/ 11 мая 2011

Я подозреваю, что вам нужно только фильтровать, используя actiontype = 'repair' (далее я предполагаю, что ActionID - это автонумерация, и у вас есть строка {ActionID = 1, actiontype = 'repair'} только случайно ... но это, возможно, слишком экстраполяция:)

Я удивлен, что ответ Дэвида Стила работает в Access (ACE, Jet, что угодно), потому что он удалил скобки из предложений JOIN (однако, если это произойдет - предлагая связанную таблицу - тогда вы должны "принять" этот ответ). Но я тоже мог не дать им «убрать их», чтобы предложения ON были близки к именам таблиц:

SELECT BuildingDetails.*, Contractors.Item, ActionDetails.ActionType
  FROM ((DormData 
         INNER JOIN Contractors 
            ON Contractors.ID = DormData.ItemID)
         INNER JOIN BuildingDetails 
            ON BuildingDetails.BuildingID = DormData.BuildingID)
         INNER JOIN ActionDetails
            ON ActionDetails.ActionID = DormData.ActionID
 WHERE ActionDetails.ActionType = 'repair';
0 голосов
/ 11 мая 2011

Добавьте это в конец вашего оператора select, чтобы исправить проблему:

where actiondetails.actiontype = 'repair' or actiondetails.actionid = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...