У меня есть две таблицы, каждая с тремя логическими столбцами (ms-access "Yes / No").
Таблица 1: A1, B1, C1
Таблица 2: А2, В2, С2
Я бы хотел, чтобы строки из Таблицы 2 были заданы конкретной строкой из Таблицы 1, которая удовлетворяла бы следующим условиям:
Если A1 - истина, то только строки, где A2 - истина, если A1 - ложь, то строки, где A2 - истина или ложь.
Если B1 - истина, то только строки, где B2 - истина, если B1 - ложь, то строки, где B2 - истина или ложь.
Если C1 - это истина, то только строки, в которых C2 - это истина, если C1 - ложь, то строки, где C2 - это истина или ложь.
Пример первый
A, B, C
Table 1: 0, 1, 0 (selected row)
Table 2: 1, 0, 0
0, 1, 0 (in return set)
1, 1, 0 (in return set)
0, 0, 1
1, 0, 1
0, 1, 1 (in return set)
1, 1, 1 (in return set)
Пример два
A, B, C
Table 1: 0, 0, 1 (selected row)
Table 2: 1, 0, 0
0, 1, 0
1, 1, 0
0, 0, 1 (in return set)
1, 0, 1 (in return set)
0, 1, 1 (in return set)
1, 1, 1 (in return set)
Как мне лучше всего это сделать?
Например, это не работает:
SELECT vw_fbScheduleFull.LocationName
, vw_fbScheduleFull.FieldName
, vw_fbScheduleFull.Description
, vw_fbScheduleFull.StartTime
, vw_fbScheduleFull.EndTime
, vw_fbScheduleFull.LowerDivision
, vw_fbScheduleFull.UpperDivision
, vw_fbScheduleFull.SeniorDivision
FROM (vw_fbSchedule
Full INNER JOIN fbDivision
ON vw_fbScheduleFull.LowerDivision = fbDivision.LowerDivision
AND fbDivision.LowerDivision = 1
OR vw_fbScheduleFull.UpperDivision = fbDivision.UpperDivision
AND fbDivision.UpperDivision = 1
OR vw_fbScheduleFull.SeniorDivision = fbDivision.SeniorDivision
AND fbDivision.SeniorDivision = 1)
WHERE (vw_fbScheduleFull.PracticeDate = ?)
AND (vw_fbScheduleFull.Locked IS NULL)
AND (fbDivision.DivisionName = ?)
ORDER BY vw_fbScheduleFull.LocationName
, vw_fbScheduleFull.FieldName
, vw_fbScheduleFull.StartTime