Я пытаюсь добавить недостающие данные в БД и поэтому пытаюсь собрать эти недостающие данные с помощью запросов.
В моей таблице Excel у меня есть два столбца: col A
заполнен кодами компонентов, аcol J
содержит соответствующие коды типов активов.
Я хочу найти все несуществующие комбинации компонентов и типов активов в одном запросе .
В настоящее время я зацикливаюсьчерез лист Excel, как в следующем примере:
arr = Range("B3:J5000")
For i = 1 To 5000-2
Set rs = cnn.Execute("Select Top 1 AT.Code From astComponents C Join astAssetTypes AT ON AT.Id = C.AssetTypeId Where C.Code = '" & arr(i, 1) & "' And AT.Code = '" & arr(i, 9) & "'")
If rs.EOF Then
'Missing data was found
End If
Next i
Это, однако, не к моему удовлетворению.Я хочу закончить с набором записей с отсутствующими комбинациями типа компонент-актив.Это значительно улучшило бы скорость моей программы (в 120 раз быстрее)
Я пытался использовать Except
, но это не привело к записям, где я ожидал их:
Select Distinct C.Code, AT.Code
FROM dbo.astComponents C
JOIN dbo.astAssetTypes AT ON AT.Id = C.AssetTypeId
WHERE (C.Code= '0738.D100' AND AT.Code = '0738.M00_03.03') Or (C.Code= '0738.D101' AND AT.Code = '0738.L00_04.04')
Except Select C.Code, AT.Code From astComponents C Join astAssetTypes AT ON AT.Id = C.AssetTypeId
РЕДАКТИРОВАТЬ
Как уже упоминалось, желаемым выходом должны быть отсутствующие комбинации компонента-актива.Пример:
Component Asset Type
0738.D101 0990.D10_03.03
0150.C101 0738.L00_04.04
SQL-Fiddle
Задача : проверьте, существуют ли указанные ниже комбинации компонента-актива в скриптебаза данных.Если нет, добавьте эти комбинации к выводу.
Component Asset Type
0738.D100 0990.D10_03.03
0738.D101 0990.D10_03.03
0150.C101 0738.L00_04.04
0738.L004 0738.M00_03.03
0990.D103 0738.M00_03.03