2015-08-21 1 views
1

Espérons que ce sera facile de répondre:Limite SOQL résultats de la requête de la clause de l'enfant

select name, id, description, isactive, productcode, imageurl__c, (select name, id, unitprice,Must_Override_Price__c, Is_Taxable__c from PricebookEntries where pricebook2id =: pbe.id) from product2 

Comment puis-je éviter les enregistrements produit2 qui ont aucun enregistrement pricebookentry des enfants d'être interrogé?

Alors disons que j'ai 10 produits, mais seulement deux correspondent à la clause WHERE. Je veux seulement que ces deux-là apparaissent, donc je ne gaspille pas de ressources/lignes.

Répondre

1

Exécute la relation de requête à l'envers. Vous pouvez toujours obtenir tous les champs Product2 requis et vous obtiendrez uniquement les résultats des enregistrements PricebookEntry existants.

E.g.

select Id, Name, Pricebook2Id, Product2Id, UnitPrice, IsActive, UseStandardPrice, 
     ProductCode, IsDeleted, 
     Product2.Id, Product2.Name 
from PricebookEntry 
where pricebook2id = :pbe.id 
1

Vous pouvez faire la requête en sens inverse comme indiqué dans le commentaire ou essayer de mettre où l'état de Daniel dans la requête principale ainsi

select name, id, description, isactive, productcode, imageurl__c, 
    (select name, id, unitprice,Must_Override_Price__c, Is_Taxable__c 
    from PricebookEntries 
    where pricebook2id =: pbe.id) 
from product2 
where Id IN (select Product2Id 
       from PricebookEntries 
      where pricebook2id =: pbe.id)