2 votes

La requête complexe est-elle possible?

Je possède 3 tables, une table parent et 2 tables filles. Disons que Mother_c est la table parent. Ensuite, Child_c et Pet_c sont les 2 tables filles qui ont un pointeur de relation maître-détail vers Mother_c.

J'ai l'identifiant d'une ligne de Child_c, je veux récupérer toutes les lignes de Pet_c qui correspondent à la Mother_c de cette unique ligne de Child_c.

Je me demande si cela est possible en une seule requête SOQL ?

2voto

ryanbrainard Points 3136

Oui, c'est totalement possible avec semi-join SOQL. J'ai testé cela avec les objets CRM standard comme ceci :

SELECT Id,
      (SELECT Id FROM Cases) 
FROM Account 
WHERE Id IN (SELECT AccountId 
             FROM Contact 
             WHERE Id = '0036000000qCwp9'
            )

Pour vous expliquer cela, avec un ID de Contact donné, vous trouvez d'abord le compte parent, puis redescendez vers les cas enfants. Dans votre exemple avec des objets personnalisés, ce serait très similaire, mais utiliserait les noms de relations personnalisées __r à la place :

SELECT Id,
      (SELECT Id FROM Pet__r) 
FROM Mother__c 
WHERE Id IN (SELECT Mother__c 
             FROM Child__c 
             WHERE Id = '003a000000qCwp9'
            )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X