Многопольный первичный ключ

По причинам, которые я не могу понять, люди, которые предоставляют мои таблицы, не имеют какой-либо формы однозначного идентификатора для записей 20k+ в своих таблицах.

У меня есть два поля, BuildingCode и RoomCode, которые вместе составляют уникальную комнату. Например:

BuildingCode    RoomCode    OtherInfo
001             100A        This is room 100 A in building 1
001             101         Different room in the same building
002             100A        This is still unique, even though two 100As exist

Я знаю, что могу сообщить доступ к индексам обоих этих полей под одним "MainIndex" и обеспечить отсутствие дубликатов. Что я не знаю, как это сделать - разрешить другой таблице ссылаться на одну из этих комнат как на родительскую (отношение один ко многим).

В моей таблице компьютеров я хочу указать одну конкретную комнату. То есть я хочу убедиться, что RoomRef является ссылкой на одну уникальную комнату. Как я могу это сделать?

ComputerSN     RoomRef
ABC123         001-100A
ABC124         002-100A

Я не могу изменить расположение данных таблиц Room из-за способа обновления данных (в таблицах комнат).

Любая помощь, безусловно, ценится!

1 ответ

Решение

Номер ссылки должен состоять из двух полей, чтобы соответствовать данным. Тогда достаточно просто присоединиться к запросу. Например

 SELECT DataTable.BuildingCode, DataTable.RoomCode, Count(DataTable.RoomCode)
 FROM DataTable
 INNER JOIN LookUpTable
 ON DataTable.BuildingCode = LookUpTable.BuildingCode
 AND DataTable.RoomCode= LookUpTable.RoomCode
 GROUP BY DataTable.BuildingCode, DataTable.RoomCode

Или около того.

Другие вопросы по тегам