Где использовать СО?

В этом запросе у меня есть:

        START root = node(*)
        MATCH root-[:HAS_DEPARTMENTS]->()<-[:IS_DEPARTMENT]-department-[relationship1:HAS_CATEGORY_SUGGESTION]->categorySuggestion-[relationship2:IS_CATEGORY_SUGGESTION]->()<-[:HAS_CATEGORY_SUGGESTIONS]-root
        WHERE root.name = "Store" and department.name = "foo" and categorySuggestion.name = "bar"
        DELETE relationship1, relationship2

        WITH root, department, categorySuggestion
        MATCH root-[:HAS_CATEGORIES]->categories
        CREATE department-[:HAS_CATEGORY]->categorySuggestion
        CREATE categories<-[:IS_CATEGORY]-categorySuggestion

У меня есть предложение WITH, разделяющее две части.

Если я передвину DELETE вниз ниже WITH, я получу ошибку.

Мне просто интересно, как я узнаю, где я должен использовать WITH.

Есть ли какие-то золотые правила?


person ajsie    schedule 21.05.2012    source источник


Ответы (1)


Предложение WITH разделяет различные передаваемые операторы шифровального запроса. После WITH следующие части имеют видимость только переменных, названных в предложении WITH. Если вы не указываете их в WITH, ваш DELETE не будет работать.

person Peter Neubauer    schedule 21.05.2012