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

WinDev Discussion :

Requetête avec selection sur un total


Sujet :

WinDev

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 12
    Points : 2
    Points
    2
    Par défaut Requetête avec selection sur un total
    Bonjour à tous,

    Je coince sur un petit problème au niveau des sélections des requêtes.
    Je dispose d'une base dans l'analyse sur laquelle j'ai créé une requête.

    Est il possible de créer une condition de sélection pour récupérer un nombre d'enregistrements pour que le total de tous les éléments sélectionnés soit égal à 1 paramètre.

    Pour l’exemple :l'intitulé des colonnes:

    code tache Nom de la tache temps nécessaire(min)
    1 nom 1 10
    2 nom 2 14


    (il y a un grand nombre d'enregistrements

    Je voudrai créer une requête qui me donne un certain nombre de lignes pour arriver à un temps total donné.
    si je donne 60 min -> il me donne 5 tache pour que le total soit de 60

    est ce possible?
    J’espère que j'ai été à peu prés clair....

    Merci beaucoup d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    comme ça à chaud je dirais non pas possible. Pourquoi ? parce qu'en fait le résultat est un total sur un nombre de lignes qui vont répondre à des critères. Le total lui ne répond à aucun critère, il est juste un calcul.

    Si tu as juste un problème de temps de réponse, peut-être que tu devrais construire ta requête différemment ou avoir des vues, des curseurs ou tout autre moyen de construire des sous-ensembles de tes données pour limiter les enregistrements à ceux répondant aux critères de sélections et en faire des unions, des requêtes imbriquées etc ...

    Nicolas

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonsoir

    A priori, non.
    Surtout que je suppose que les tâches retenues pour "nom 1" ne peuvent pas être affectées en même temps à "nom 2".

    Il y a encore le problème de savoir si vous pouvez piocher vos tâches au hasard ou si vous devez tant que faire se peut épuiser les tâches dans un certain ordre croissant ou décroissant.

    A mon avis, il faut parcourir séquentiellement le fichier selon la clé de parcours que vous aurez choisie, en additionnant le temps des tâches dans un compteur à comparer au paramètre passé (60 minutes dans votre exemple)

    • total compteur + temps de la ligne < paramètre, on sélectionne la ligne, on incrémente le compteur de la valeur de la tâche et on va à la ligne suivante ;
    • total compteur + temps de la ligne > paramètre, on ne sélectionne pas la ligne, on n'incrémente pas le compteur et on va à la ligne suivante ;
    • total compteur + temps de la ligne = paramètre, on sélectionne la ligne et on incrémente éventuellement le compteur de la valeur de la tâche et on traite les lignes sélectionnées avant de reprendre l'itération pour une nouvelle sélection après remise à zéro du compteur ;


    Plusieurs difficultés :
    1. il faut marquer les lignes déjà attribuées à une tâche, si on part du principe que ces tâches ne sont attribuées qu'à un seul "nom N", et donc ajouter un drapeau (booléen) à chaque ligne soit du fichier soit de la requête Select ;
    2. soit on repart chaque fois du début (ou de la fin) du fichier pour l'épuiser de manière +/- ordonnée, soit on poursuit le balayage du fichier là où on est arrivé au sortir de la sélection précédente, ce qui devrait diminuer le nombre de balayages du fichier ;
    3. la plupart du temps le balayage va se terminer par un dernier job incomplet, toutes les lignes ayant été épuisées et le compteur restant inférieur au paramètre.
      Il faut donc compter les lignes sélectionnées pour savoir quand s'arrêter ;
    4. On peut arriver à la fin du fichier sans avoir pu trouver une sélection adéquate de lignes alors qu'il reste des lignes à sélectionner.
      Si on a procédé en continuant sur sa lancée, il faut repartir du début du fichier tant qu'on atteindra pas la fin du fichier avec un job incomplet, tandis que si on repart chaque fois du début, alors c'est la fin du traitement.
    5. En toute fin, il faut évaluer le déchet et voir à combien de jobs (combien de paramètres) il correspond puis gérer la situation : commencer à essayer d'optimiser des combinaisons, finir à la main ?


    Bon travail
    Hemgé

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    J'ajouterai que ta question rpose plus sur un problème de recherche opérationnelle que sur de la requête pure. Il faut que tu creuses du coté des algorithmes de RO et d'optimisation (pb du voyageur de commerce par exemple). Il faudra que tu modifies peut être ta base (clés spécifiques) afin de réussir ton coup.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

Discussions similaires

  1. Query avec select sur un fichier de type PF
    Par AAWOOPY56 dans le forum AS/400
    Réponses: 14
    Dernier message: 11/09/2009, 11h00
  2. UPDATE avec SELECT sur la même table
    Par Invité dans le forum Langage SQL
    Réponses: 7
    Dernier message: 07/12/2007, 03h39
  3. Insert avec select sur table avec Trigger d'insertion
    Par bran_noz dans le forum Développement
    Réponses: 5
    Dernier message: 23/12/2005, 14h38
  4. problème avec select sur onchange
    Par Kerod dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/12/2005, 14h05
  5. pb avec select sur deux champs
    Par graphicsxp dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/03/2005, 15h30

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