2016-08-11 4 views
0

Я одно ведро содержит 2 вида объектов: первый:couchbase n1qlQuery Удалить с подзапроса

{ 
    "id": "123" 
    "objectNamespace": "a", 
    "value": "value1" 
} 

второй:

{ 
    "id": "234", 
    "objectNamespace": "b", 
    "value": "value2", 
    "association": ["123"] 
} 

Теперь я хочу удалить, чтобы удалить документ из типа a только если у НЕТ нет ассоциаций от типа b:

Я попробовал:

DELETE FROM `bukcet_name` 
    WHERE objectNamespace = 'a' 
    AND id = "123" 
    AND NOT EXISTS (
      SELECT * 
      WHERE ANY item IN bukcet_name.association 
        SATISFIES item = "123" END); 

НО это всегда удаляет документ с идентификатором 123 Как я могу это сделать?

ответ

-1

Между вашими данными и вашим запросом существует несколько несоответствий.

(1) Вам не хватает предложения FROM.

(2) Вы используете ассоциации вместо ассоциации.

(3) bucket_name.

Вот возможный запрос.

DELETE FROM `bucket_name` 
    WHERE objectNamespace = 'a' 
    AND id = "123" 
    AND NOT EXISTS (
      SELECT * FROM bucket_name b2 
      WHERE ANY item IN b2.association 
        SATISFIES item = "123" END); 
+0

Вы проверили предложение? это даже не компилируется? – igreen

+0

Скомпилирует и работает для меня. Я удивлен, если вы не понимаете этики запроса и получения помощи. – geraldss

Смежные вопросы