Я застрял в этом запросе: Я хотел бы ОБНОВИТЬ каждую строку в таблице temp #tmpHierarchy и установить pLevel = 3, если строка еще не установлена на уровне (= 99), и один из них [возможно] родительские элементы содержатся в таблице темп и имеет уровень = 2.UPDATE WHERE ВозможнаParentItem IN ParentItems
элементов таблицы содержит все элементы, таблица ParentItems содержит ссылки между элементами (поля Пункт, ParentItem)
Что-то вроде:
UPDATE #tmpHierarchy SET pLevel = 3 WHERE pLevel = 99
AND (
(
SELECT Item FROM Items as IT LEFT JOIN ParentItems as PTS ON PTS.ItemID = IT.ID
WHERE IT.ID = #tmpHierarchy.ItemID
)
IN
(
SELECT Item FROM #tmpHierarchy WHERE pLevel = 2
)
)
Это было бы о том, чего я хочу достичь, bu t он возвращает
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.
... по очевидной причине, что у меня более чем одно значение в разделе IN (?).
Я был бы рад получить некоторые предложения по этой проблеме.
С уважением,
Дуб
Да, как я уже писал в этом вопросе, я знаю, что это не будет работать ... Я хотел бы знать, как решить эту проблему. Очевидно, что результат этого конкретного выбора будет возвращать обычно либо NULL, либо 1 элемент, но иногда элемент имеет более одного родителя (несколько макс). Ни в коем случае это большой набор предметов. Но мне нужно обработать это кросс-сравнение в UPDATE. –
Я добавляю исправленный запрос, который должен соответствовать вашим ожиданиям. –