Для удобства я работаю над однократным преобразованием данных из нескольких листов Excel, которые я импортировал в базу данных. Данные не нормализованы, и я пытаюсь их нормализовать.
У меня есть 3 таблицы в базе данных SQL. Они называются OldAssets, OldTransactions и OldUsers.
OldTransactions имеет 7903 записей. OldUsers имеет 7437. OldAssets имеет 9764
Я использую LINQ to SQL для запроса этих таблиц, используя этот код
from oa in OldAssets
from ot in OldTransactions
from u in OldUsers
where (oa.Asset_Serial_Number == ot.Asset_Serial_Number && ot.User_EID == u.User_EID && ot.Asset_Tag == oa.Asset_Tag)
select new Transactions {
DevCenter = ot.Transaction_Dev_Center,
Action = ot.Transaction_Action,
Status = ot.Transaction_Status,
ModificationDate = ot.Modified,
ModifiedBy = ot.ModifiedBy,
CreatedBy = ot.CreatedBy,
TransactionDate = (System.DateTime)ot.Transaction_Date,
Transaction_Asset = (System.Int32)oa.ID,
Transaction_User = (System.Int32)u.ID }
Я пытаюсь просмотреть все мои OldTransaction и для каждой OldTransaction создать новую транзакцию, которая указывает Transaction_Asset и Transaction_User на основе сопоставления серийного номера актива и user_EID.
Мой результат дает мне чуть более 10000 записей новых «Транзакций». Я не понимаю, как я могу получить больше записей, чем количество старых транзакций, которые у меня есть.
Какой запрос я могу написать, который будет возвращать одну новую транзакцию для каждой OldTransaction, но с добавленными свойствами Transaction_Asset и Transaction_User, основанными на сопоставлении serial_number и User_EID?