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

Langage SQL Discussion :

Enchaînement de tâches


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 10
    Points
    10
    Par défaut Enchaînement de tâches
    J'ai fais une grosse reqête pour un besoin de mon projet mais il me manque un petit truc pour que ca soit parfait, par exemple si pour un employe il y a trois tache à effectuer.le but est d'afficher les informations des taches 2 à 2.

    Sur la même ligne je veux avoir les informations de la tache1 et tache2
    Sur la deuxieme ligne je veux avoir Les informatons de la tache2 et tache3.

    Ma requete me donne:
    Tache1 tache2
    tache1 tache3
    tache2 tache3
    voila la requête sql:
    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
     
    select nom, prenom, tc.nom_tache, tc1.nom_tache,
    emps."Date" as Date1,
    emps1."Date" as Date2, emps.heuredebut_tache, emps1.heuredebut_tache, tc.pays_tache, tc1.pays_tache,
    tc.region_tache, tc1.region_tache, tc.ville_tache, tc1.ville_tache,
    tc.batiment_tache, tc1.batiment_tache, dp.temps_corr, dr.temps_corr, dv.temps_corr, dt.temps_corr,
    dr1.temps_corr as Temps0, dr1.temps_corr as Temps1, dv1.temps_corr as Temps2,
    dt1.temps_corr as Temps3
    from emploidutemps emps
    LEFT OUTER JOIN emploidutemps emps1 on emps.id_employes = emps1.id_employes
    LEFT OUTER JOIN employes emp on emps.id_employes = emp.id_employes
    LEFT OUTER JOIN tache tc on emps.id_tache = tc.id_tache
    LEFT OUTER JOIN tache tc1 on emps1.id_tache = tc1.id_tache
     
    LEFT OUTER JOIN dispays dp on ((dp.pays = tc.pays_tache and dp.pays_centre = tc1.pays_tache) or (dp.pays = tc1.pays_tache and dp.pays_centre = tc.pays_tache))
    LEFT OUTER JOIN disregion dr on (dr.pays = tc1.pays_tache and dr.region = tc1.region_tache )
    LEFT OUTER JOIN disville dv on (dv.region = tc1.region_tache and dv.ville = tc1.ville_tache)
    LEFT OUTER JOIN disbatiment dt on ( dt.ville = tc1.ville_tache and dt.batiment = tc1.batiment_tache)
     
     
    LEFT OUTER JOIN dispays dp1 on (dp1.pays = tc.pays_tache )
    LEFT OUTER JOIN disregion dr1 on (dr1.pays = tc.pays_tache and dr1.region = tc.region_tache )
    LEFT OUTER JOIN disville dv1 on (dv1.region = tc.region_tache and dv1.ville = tc.ville_tache)
    LEFT OUTER JOIN disbatiment dt1 on ( dt1.ville = tc.ville_tache and dt1.batiment = tc.batiment_tache)
     
    where emps."Date" = emps1."Date"
    and emps1.heuredebut_tache > emps.heuredebut_tache;
    la selection se fait par rapport à l'heure du debut de la tache. Il y a quelqu'un qui peut m'aider??????

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    ce que je cherche à faire est :
    si la tache 1 à pour données

    Date heure_debut
    01/01/2010 7:00

    Tache 2
    Date heure_debut
    01/01/2010 15:00

    Tache 3
    Date heure_debut
    01/01/2010 18:00

    Je veux que le resultat final soit

    ligne1 Tache1 Tache2
    ligne2 Tache2 Tache3

    Ma requete prends en consedirato le fait que heure de la tache 1 > heue de de debut de la tache 2 et 3

    elle m'affiche une ligne supplementaire Tache1 Tache3.

    Est ce qu'il y a moyen pour detourne le probleme.

    J'ai vraiment besoin de votre aide.

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    J'ai l'impression que ce que tu cherches à faire est de la cosmétique, donc pas le boulot de SQL mais de l'application qui présente les données à l'utilisateur.

    Ce qu'il serait possible de faire en SQL et encore assez cohérent, c'est d'afficher les tâches dans l'ordre de la date de début, ainsi que, sur la même ligne, la tâche qui suit immédiatement.

    Soit les tâches :
    Tâche / heure début
    1 / 2010-05-02 10:00:00
    2 / 2010-05-03 08:00:00
    3 / 2010-05-02 11:00:00

    Affichage :
    Tâche / heure début / Tâche suivante / heure début suivante
    1 / 2010-05-02 10:00:00 / 3 / 2010-05-02 11:00:00
    3 / 2010-05-02 11:00:00 / 2 / 2010-05-03 08:00:00
    2 / 2010-05-03 08:00:00

    C'est ça que tu veux ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Je te remercie pour ta reponse, oui voila c'est exactement ce que je veux, et je viens de trouver une solution. Ce que j'ai fait est de creer une view avec ma premiére requête. et j'ai utilise la requête suivante sur ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE VIEW Dist_Tache_Tache AS
    SELECT distinct *
    FROM RESUME2 r
    WHERE (r.nom,r.tache1,(r.heure_tache2 - r.heure_tache1)) in (SELECT r1.nom,r1.tache1,min(r1.heure_tache2 - r1.heure_tache1) 
    							       FROM RESUME2 r1 
    							         GROUP BY r1.nom,r1.tache1 )
    ORDER BY r.heure_tache1;
    Je me suis base sur la difference entre l'heure de debut de la premiere tache est celle de la deuxieme. Le but etait de prendre le min de cette difference.
    ma requête fonctionne et remplie bien sa mission.

    Donc j'aimerais biens avoir ton avis.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    J'ai oublié de precisé, le but et de calculer automatiquement le temps du travail de chaque employe par jour. Car le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    temps du travail =  Durée de toutes les taches + Durée de correspondance
    Je crois que maintenant c'est plus clair.

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/07/2009, 09h04
  2. barre de tâche Windows
    Par calou34 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 10/05/2005, 20h42
  3. Comment masquer le MessageBox de la barre des tâches ?
    Par Coussati dans le forum Langage
    Réponses: 7
    Dernier message: 25/08/2003, 14h33
  4. [SYBASE] gestion de tâches automatiques
    Par gaille dans le forum Sybase
    Réponses: 2
    Dernier message: 16/06/2003, 23h12
  5. HAUTEUR de la barre des tâches de Windows ?
    Par Lung dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 13/12/2002, 11h43

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