Многопольный первичный ключ
По причинам, которые я не могу понять, люди, которые предоставляют мои таблицы, не имеют какой-либо формы однозначного идентификатора для записей 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
Или около того.