Вернуть пустые записи вместо «Никаких записей не найдено» из Salesforce

Я работаю над мобильным приложением, используя SalesForce Mobile SDK, и для работы функции я создаю сопоставление между customer_id и соответствующим адресом. Поэтому, чтобы иметь сопоставление, я изменил запрос SOQL, чтобы вернуть значение customer_id после выполнения запроса.

Это сопоставление работает нормально, когда найден адрес. Но когда нет связанного адреса, я не получаю никакого ответа. Итак, сопоставив customer_id и поместив в него нулевой адрес, мне понадобится вернуть customer_id, даже если адрес не найден.

Чтобы лучше объяснить: следующий запрос не возвращает никакого результата, поскольку адрес не найден:

SELECT Account_vod__c,Address_line_2_vod__c, City_vod__c, Name FROM Address_vod__c WHERE Account_vod__c = '001e000000qVp8WAAS'

Но я хочу создать запрос таким образом, чтобы, если записи не были найдены, он возвращал что-то вроде:

введите здесь описание изображения


person Rahul Kalidindi    schedule 20.11.2018    source источник
comment
выберите идентификатор клиента из таблицы клиентов (при условии, что такая вещь существует), а затем выполните левое соединение из таблицы клиентов в таблицу адресов.   -  person ADyson    schedule 20.11.2018


Ответы (3)


вы можете попробовать, используя объединение

SELECT coalesce(Account_vod__c,001e000000qVp8WAAS),
Address_line_2_vod__c, City_vod__c, Name 
FROM Address_vod__c WHERE Account_vod__c = '001e000000qVp8WAAS'
person Zaynul Abadin Tuhin    schedule 20.11.2018
comment
Спасибо Зайнул. Похоже, что объединение не поддерживается Salesforce SOQL. Итак, выдает мне ошибку: Malformed Query. Отредактировал теги вопроса только для SOQL. - person Rahul Kalidindi; 20.11.2018

ЭТО ОТВЕЧАЕТ НА ВОПРОС, ОСНОВАННЫЙ НА ИСХОДНОМ ТЕГЕ СУБД:

SELECT a.Account_vod__c, a1.Address_lineAccount_vod__cvod__c, a1.City_vod__c, a1.Name
FROM (SELECT '001e000000qVp8WAAS' AS Account_vod__c) a LEFT OUTER JOIN
     Address_vod__c a1
     ON a1.Account_vod__c = a.Account_vod__c;

Если у вас более одного Account_vod__c, используйте UNION ALL и выполните LEFT JOIN :

SELECT a.Account_vod__c, a1.Address_line_2_vod__c, a1.City_vod__c, a1.Name
FROM (SELECT '001e000000qVp8WAAS' AS Account_vod__c
      UNION ALL
      . . .
     ) a LEFT OUTER JOIN
     Address_vod__c a1
     ON a1.Account_vod__c = a.Account_vod__c;
person Yogesh Sharma    schedule 20.11.2018
comment
Спасибо Йогеш. Я новичок в Salesforce SOQL. Похоже, что SOQL работает не так, как SQL. Выдает ошибку MALFORMED_QUERY: FROM ( SELECT '001e000000qVp8WAAS' AS ^ ERROR в строке: 2: столбец: 5 неожиданный токен: '(' - person Rahul Kalidindi; 20.11.2018
comment
Отредактировал теги. Еще раз спасибо - person Rahul Kalidindi; 20.11.2018

Вложенные запросы SOQL сделали свое дело:

SELECT Id, Name,(SELECT Id, Account_vod__c, Name, Address_line_2_vod__c, City_vod__c FROM Address_vod__r)FROM Account WHERE Id = '001e0000008Ch5nAAC' LIMIT 1
person Rahul Kalidindi    schedule 21.11.2018