(3) первым циклом запихиваешь в соответствие ключом номенклатуру, значением - строку списка. в этом же цикле массив номенклатур и очищаешь текст в строках.
далее - 1 запрос, получающий все данные, с отбором по массиву, полученному в первом цикле.
при обходе выборки по ключу соответствия устанавливаешь значения текста соответствующих строк.
(5) Можно и через ТЗ, но соответствие, вроде, быстрее (см. 4)
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой