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

Développement de jobs Discussion :

Creation d'une requete avec "where" dynamique


Sujet :

Développement de jobs

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 208
    Points : 82
    Points
    82
    Par défaut Creation d'une requete avec "where" dynamique
    Bonjour a tous,

    Je suis face a un problème que j'espère vous pourrez m'aider à résoudre.

    J'ai deux objets tOracleInput qui grace a un tJoin me ressort les enregistrements que je souhaite.

    Mais j'ai maintenant une autre requete qu'il faut appliquer pour chacun des enregistrements.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select sum(poids) from maTable where colis_id = VALUE
    dans l'exemple ci dessus, il faut donc que mon where soit dynamique (que la requete s'exécute pour chaque VALUE obtenus grâce à la précédente requete.



    C'est pas très bien expliqué, veuillez m'en excuser mais j'espere que vous comprendrez mon soucis et pourrez m'aider.

    Merci

  2. #2
    Membre émérite
    Avatar de haskouse
    Homme Profil pro
    Salesforce
    Inscrit en
    Août 2009
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Salesforce
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2009
    Messages : 923
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour,

    Ce que tu désires faire est possible, il suffit que dans ta requête tu mettes par exemple une variable de contexte dans le where comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT sum(poids) FROM maTable WHERE colis_id =" + context.mavariable
    Maintenant il faut savoir d'où proviendra la valeur de ta variable de contexte :
    Une table, Un fichier de config, entrée par le user, etc ...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 208
    Points : 82
    Points
    82
    Par défaut
    Ok, je comprend l'astuce. Dans mon cas, cela provient d'une autre requete. Je vais regarder du coté des tForEach ou tLoop ou que sais-je encore si j'arrive a obtenir ce que je veux

  4. #4
    Membre habitué
    Profil pro
    Consultant informatique
    Inscrit en
    Mars 2003
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2003
    Messages : 132
    Points : 199
    Points
    199
    Par défaut
    tu crée une variable de context comme te la dis haskouse.

    En Début de job, ta requete pour aller chercher les variable
    tu pointe le flux de donnée vers un tJavaFlex ou tu affecte la valeur a ta variable de context (context.variable=row1.variable; tu peux dans l'init )
    Ensuite tu choisit la ligne iterate pour pointer vers le composant ou tu utilise le where dynamique .
    Voili Voilou

  5. #5
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Jette un coup d'œil du coté du tFlowToIterate, afin d'exécuter le 2ème tOracleIntput pour chaque ligne en sortie du premier.

    Comme le propose Haskouse, tu peux utiliser les données en sortie du 1er select dans la requête du 2ème (tu récupères la variable qui va bien avec l'auto-completion (ctrl+espace)).

    Nicolas

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 208
    Points : 82
    Points
    82
    Par défaut
    Merci beaucoup pour toutes ces infos !!!

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 208
    Points : 82
    Points
    82
    Par défaut
    Bon, j'ai quelques difficultés à utiliser le tFlowToIterate. Y a pas beaucoup de tuto sur le net ou d'exemples.
    je vais donc essayer d'expliquer au mieux ce que j'ai et ce que je souhaite faire


    J'ai un OracleInput qui me renvoie un certain nombre de lignes avec diverses données.

    Je souhaiterais ajouter des données à chacune des ligne en provenance d'une autre table (en se basant sur l'ID de l'OracleInput).

    => jusque la, il m'est possible d'utiliser un tJoin qui marche très bien (ma seconde requete ne me renvoyant qu'une ligne par ID)

    Mais, je dois encore rajouter des infos a chacune des lignes. Toujours en me basant sur l'ID. Cependant, cette requete me sort plusieurs lignes pour un ID. Il me faudrait concatener toutes ces lignes (a priori, le tDenormalize fais cela)

    Mon problème réside dans l'enchainement des objets..

    tOracleInput ----> tFlowToIterate ----> (ici je récupère les 2 requetes avec l'ID de la ligne itérée) ----> (ici, j'ajoute ces données a la ligne itérée) -----> (j'insère la ligne dans une BDD existante)

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 229
    Points : 137
    Points
    137
    Par défaut
    Bonsoir,

    As-tu pu avancer sur l'orchestration du composant tFlowIterate ?
    je bloque aussi sur son utilisation

  9. #9
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Bonjour,

    A priori la problématique de yozart ne nécessite pas l'utilisation d'un tFlowToIterate. Il devrait arriver à faire ce qu'il veut avec des lookups sur un tMap suivi d'un tDenormalize.

    Scariou29, le mieux serait que tu créées une nouvelle discussion pour exposer ton problème.

    Nicolas

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 229
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    Discussion déjà créée
    http://www.developpez.net/forums/d10...tures-fichier/

Discussions similaires

  1. VB.Net 2005 : creation d'une form avec une requete
    Par SALIA LOUA OLIVIER dans le forum Windows Forms
    Réponses: 1
    Dernier message: 10/02/2010, 15h44
  2. Creation d'une requete avec plusieurs aggrégats
    Par Franck_P dans le forum Langage SQL
    Réponses: 6
    Dernier message: 23/06/2008, 23h38
  3. Réponses: 5
    Dernier message: 25/12/2005, 16h17

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