Вы столкнулись с проблемами, потому что ваши данные не соответствуют основным правилам нормализации базы данных - они не имеют структуры и просто представлены в списке, как вы можете использовать в Excel.
Учтите, чтоMS Access работает с неупорядоченными наборами данных , и поэтому вы не можете полагаться на порядок записей, выводимых запросом, если не указано условие order by
.
Для вашегонабор данных, это означает, что нет ничего, связывающего запись DISCONNECT BUS 1
с записью CONTINGENCY 'AA:P1_AA'
.
Для начала я бы предложил разделить ваши данные на две отдельные таблицы: первая может содержать 'header'
информация, такая как:
+---------+------------------------+----------+
| ID (PK) | Data | Location |
+---------+------------------------+----------+
| 1 | CONTINGENCY 'AA:P1_AA' | X |
| 2 | CONTINGENCY 'AB:P1_AB' | X |
| 3 | CONTINGENCY 'AC:P1_AC' | X |
+---------+------------------------+----------+
Вторая (назовите ее 'detail'
) будет содержать содержимое каждой записи 'header'
, связанной с первичным ключом в таблице 'header'
, например:
+---------+----------+-------------------+
| ID (PK) | HID (FK) | Data |
+---------+----------+-------------------+
| 1 | 1 | DISCONNECT BUS 1 |
| 2 | 1 | DISCONNECT BUS 2 |
| 3 | 1 | DISCONNECT BUS 3 |
| 4 | 1 | DISCONNECT BUS 4 |
| 5 | 1 | DISCONNECT BUS 5 |
| 6 | 1 | DISCONNECT BUS 6 |
| 7 | 1 | DISCONNECT BUS 7 |
| 8 | 2 | DISCONNECT BUS 8 |
| 9 | 2 | DISCONNECT BUS 9 |
| 10 | 2 | DISCONNECT BUS 10 |
| 11 | 3 | DISCONNECT BUS 11 |
| 12 | 3 | DISCONNECT BUS 12 |
| 13 | 3 | DISCONNECT BUS 13 |
+---------+----------+-------------------+
Здесь FK
обозначает Внешний ключ ;PK
обозначает Первичный ключ .Внешний ключ в предложенной мной таблице 'detail'
содержит значение поля первичного ключа ID в таблице 'header'
.
Таким образом, вы можете легко создать запрос с получением требуемых результатов, например:
select header.data, detail.data
from header inner join detail on header.id = detail.hid
where header.id = [Please enter an ID:] and header.location = [Please enter a location:]