IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Salesforce.com Discussion :

SOQL Select tous les comptes qui possèdent au moins un Event


Sujet :

Salesforce.com

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 177
    Points : 86
    Points
    86
    Par défaut SOQL Select tous les comptes qui possèdent au moins un Event
    Bonjour,

    Je cherche à sélectionner tous les comptes qui ont au moins un Event, mais avec soql j'ai un peu de mal, j'ai essayé avec:
    SELECT id,(Select Id, WhatId, AccountId, Account.Name From Events where Account.Name <> null) FROM Account

    Nom : ssss.JPG
Affichages : 335
Taille : 67,1 Ko
    Comme vous pouvez le voir ça selectionne même les comptes qui n'ont pas d'event rattachés.

    J'ai testé cela aussi, en me disant que avec le Account.Name like '%', ça selectionnerait que ceux qui sont remplies, mais rien non plus
    SELECT id,(Select Id, WhatId, AccountId, Account.Name From Events where Account.Name like '%') FROM Account

    Pareil.
    Une idée svp?

    Bonne journée,

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 239
    Points : 424
    Points
    424
    Par défaut
    je chercherais plutot à filtrer les Account à partir des events

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Id FROM Account WHERE Id IN (SELECT AccountId FROM Event)

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 177
    Points : 86
    Points
    86
    Par défaut
    J'ai cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Entity 'Event' is not supported for semi join inner selects
    Et le group by ne peut être utilisé sur soql. Y'a bien un moyen de lister les comptes qui sont affecté à au moins 1 event sans passer par du code!
    C'est con de devoir tous selectionner et de faire un filtre après... Surtout quand la requête selectionne plus de 3 000 000 de comptes...

    Une autre idée?

    Merci

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 130
    Points : 146
    Points
    146
    Par défaut
    Si ce n'est pas pour mettre dans une classe c'est possible de le faire très simplement sur un rapport de type compte en utilisant un filtre croisé :

    Nom : Capture d’écran 2015-07-03 à 20.32.39.png
Affichages : 310
Taille : 62,2 Ko

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 177
    Points : 86
    Points
    86
    Par défaut soql group by salesforce par batch ou rapport
    Ok super

    Et sinon via un batch voilà comment il faut faire, j'ai vérifié et j'ai bien le même nombre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    global class BA004AccountFieldEventUpdate implements Database.Batchable<sObject>{
       	global final String query ='SELECT AccountId From Event where AccountId != null';
       
        global BA004AccountFieldEventUpdate (){
               system.debug('DEBUT');   
        }
    
        
        global Database.QueryLocator start(Database.BatchableContext BC){
          //system.debug('Database.QueryLocator: ' + Database.getQueryLocator(query));   
          return Database.getQueryLocator(query);
    
        }
       
       
       
       global void execute(Database.BatchableContext BC, List<Event> scope){
       	 	system.debug('Database.QueryLocator:c ' + scope);   
       	    system.debug('Database.QueryLocator:c ' + scope.size());  
       	   
       	   	//SOQL Nous empeche de récuperer que les compte qui on au moins une activité associé à un compte
       	   	//du coup on selectionne tous les event
       	    //recup l'ensemble des id comptes
         	Set<Id> EvId = new Set<Id>();
         	for(Event ev : scope) {
    
                EvId.add(ev.AccountId);
            }
    
         	 system.debug('######BA004AccountFieldEventUpdate EvId : '+ EvId.size());
         	 	
       	    //TR061AccountFieldEventUpdate.MAJFieldsOnAccount(AccId);
       	    	 
    
        }
       
       
        global void finish(Database.BatchableContext BC){
        	system.debug('finish');
        }  
    }
    Dans execute pour lancer ce batch:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	BA004AccountFieldEventUpdate Acc = new BA004AccountFieldEventUpdate();
    	database.executebatch(Acc);
    En espérant que ça aidera...

  6. #6
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 177
    Points : 86
    Points
    86
    Par défaut
    Représentation graphique:
    Nom : Compte-Activity-report.jpg
Affichages : 306
Taille : 191,0 Ko

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher tous les pthreads qui tournent
    Par Thor Tillas dans le forum Ubuntu
    Réponses: 6
    Dernier message: 13/11/2007, 18h16
  2. Réponses: 2
    Dernier message: 02/04/2007, 08h44
  3. Lister seulement les comptes qui sont afficher au logon
    Par Pierre.g dans le forum Windows
    Réponses: 1
    Dernier message: 05/11/2006, 14h34
  4. Lister tous les triggers qui sont DISABLE
    Par mpeppler dans le forum Oracle
    Réponses: 2
    Dernier message: 23/08/2006, 10h05
  5. Réponses: 4
    Dernier message: 02/06/2006, 12h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo