Писал сегодня SQL-запрос. Надо среди прочего выбрать из базы инвентаризации производителя и модель материнки. Надо сказать, что в этом деле у производителей полный разнобой. Кто-то оставляет эти поля незаполненными - "to be filled by OEM" или "system name/system manufacturer", другие, как например HP, вместо модели материнки вписывают модель самого компа, российский Kraftway в половине машин пишет, что производитель - Kraftway, а материнка - GEG, а в другой половине (та же модель!), что материнка - MSI-такая-то. Но в обоих случаях компы собраны на одной и той же материнке.
И надо мне обработать собранные данные (OCS Inventory по-прежнему рулит) для формирования одного отчета. Приходится анализировать содержимое полей на наличие ахинеи и в особо тяжелых случаях заменять ересь на что-то вроде "вписать вручную".
Вот и сейчас как раз допиливал кусок, отвечающий за разборку этих данных. Если производитель или модель - ахинея, то заменяю их для простоты дальнейшей обработки словом "NO".
И при составлении смешанного поля "модель-производителя" анализирую комбинации типа "если производитель NO и модель NO то "ввести вручную"", "если NO и не NO, то скомпоновать так-то" ну и т.д. Всего 4 комбинации.
Анализ случаев с особо трудными производителями (тот же Kraftway: mfg:"AWARD_", mdl:"MS-7676") вставил после этой проверки и долго не мог понять, почему же, несмотря на правильность регекспа, пресловутая материнка от MSI не появляется в смешанном поле.
Моя ошибка была в том, что я пошел от общего к частному, тогда как надо было идти наоборот. Перечислил частные случаи, комбинации производителей и моделей, до общих и всё заработало.
Мораль: проверяй условия от частного - к общему! И только так.
И надо мне обработать собранные данные (OCS Inventory по-прежнему рулит) для формирования одного отчета. Приходится анализировать содержимое полей на наличие ахинеи и в особо тяжелых случаях заменять ересь на что-то вроде "вписать вручную".
Вот и сейчас как раз допиливал кусок, отвечающий за разборку этих данных. Если производитель или модель - ахинея, то заменяю их для простоты дальнейшей обработки словом "NO".
И при составлении смешанного поля "модель-производителя" анализирую комбинации типа "если производитель NO и модель NO то "ввести вручную"", "если NO и не NO, то скомпоновать так-то" ну и т.д. Всего 4 комбинации.
Анализ случаев с особо трудными производителями (тот же Kraftway: mfg:"AWARD_", mdl:"MS-7676") вставил после этой проверки и долго не мог понять, почему же, несмотря на правильность регекспа, пресловутая материнка от MSI не появляется в смешанном поле.
Моя ошибка была в том, что я пошел от общего к частному, тогда как надо было идти наоборот. Перечислил частные случаи, комбинации производителей и моделей, до общих и всё заработало.
Мораль: проверяй условия от частного - к общему! И только так.
Комментариев нет:
Отправить комментарий
Пожалуйста, воздержитесь от грубостей и персональных нападок.
Я не против матерщины, но она должна быть уместной и использоваться для выражения эмоций, а не в качестве основного средства выражения мыслей.