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 :

Calcul du nombre de ligne par tache


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 233
    Points : 82
    Points
    82
    Par défaut Calcul du nombre de ligne par tache
    Voci ma requête:
    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
    SELECT 
    PERSONNE.NOM AS NOM, 
    TACHE.DATEDEBUT AS DATEDEBUT, 
    TACHE.DATEFIN AS DATEFIN, 
    TACHE.LIBTACHE AS LIBTACHE, 
    PLANNING.DATEPLANNING AS DATEPLANNING
    FROM 
    TACHE, 
    PLANNING, 
    PERSONNE
    WHERE 
    PLANNING.IDTACHE = TACHE.IDTACHE
    AND TACHE.IDPERSONNE = PERSONNE.IDPERSONNE
    AND
    (
    PERSONNE.NOM = pNom
    AND 
    (
     
    (
    TACHE.DATEDEBUT >= sParamDateDebut
    AND TACHE.DATEDEBUT <= sParamDateFin
    )
    OR 
    (
    TACHE.DATEDEBUT <= sParamDateDebut
    AND TACHE.DATEFIN >= sParamDateDebut
    )
    OR 
    (
    TACHE.DATEFIN <= sParamDateFin
    AND TACHE.DATEFIN >= sParamDateFin
    )
    )
    )
    Le résultat est le suivant:

    Anthony 03/06/2009 03/06/2009 tache1 03/06/2009
    Anthony 19/06/2009 21/06/2009 tache2 19/06/2009
    Anthony 19/06/2009 21/06/2009 tache2 20/06/2009
    Anthony 19/06/2009 21/06/2009 tache2 21/06/2009

    Et je voudrai lregroupé les enregistrement par tâche et obtenir le nombre de jour pour cette tâche au lieu de voir toutes les lignes pour obtenir le résultat suivant:
    Anthony 03/06/2009 03/06/2009 tache2 03/06/2009 Durée:3

    Help me!

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    1) apprenez à faire des jointures avec JOIN. C'est la syntaxe normative depuis 1992 !
    2) vous pouvez utiliser une CTE avec une sous requête corrélée dans la clause SELECT :

    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
    WITH 
    T1 AS
    (SELECT PS.NOM AS NOM, 
            TC.DATEDEBUT AS DATEDEBUT, 
            TC.DATEFIN AS DATEFIN, 
            TC.LIBTACHE AS LIBTACHE, 
            PG.DATEPLANNING AS DATEPLANNING
     FROM   TACHE AS TC
            INNER JOIN PLANNING AS PG
                  ON PG.IDTACHE = TC.IDTACHE        
            INNER JOIN PERSONNE AS PS
                  ON TC.IDPERSONNE = PS.IDPERSONNE 
    WHERE   PERSONNE.NOM = pNom
    AND     (    TC.DATEDEBUT >= sParamDateDebut
             AND TC.DATEDEBUT <= sParamDateFin)
    OR      (    TC.DATEDEBUT <= sParamDateDebut
             AND TC.DATEFIN   >= sParamDateDebut)
    OR      (    TC.DATEFIN   <= sParamDateFin
             AND TC.DATEFIN   >= sParamDateFin)
    )
    SELECT *, (SELECT COUNT(*) 
               FROM   T1 AS Tin
               WHERE  Tin.NOM = Tout.NOM
                 AND  Tin.DATEDEBUT = Tout.DATEDEBUT
                 AND  Tin.DATEFIN = Tout.DATEFIN 
                 AND  Tin.LIBTACHE = Tout.LIBTACHE) AS DUREE
    FROM   T1
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 233
    Points : 82
    Points
    82
    Par défaut
    merci, j'ai fait un petit mix

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

Discussions similaires

  1. Calculer nombre de lignes par Identifiant
    Par david32 dans le forum SAS Base
    Réponses: 4
    Dernier message: 15/11/2013, 15h50
  2. [XL-2007] Calcul du nombre de ligne par date
    Par goraaa dans le forum Excel
    Réponses: 2
    Dernier message: 29/12/2009, 11h39
  3. [JTextArea] Calculer le nombre de lignes
    Par enocet dans le forum Composants
    Réponses: 4
    Dernier message: 13/12/2005, 23h12
  4. Calculer le nombre de ligne de code source
    Par yanis97 dans le forum Qualimétrie
    Réponses: 4
    Dernier message: 04/07/2005, 22h02
  5. [Debutant(e)]Calcul du nombre de ligne sous eclipse
    Par skywalker3 dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 10/12/2004, 08h53

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