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 :

rassembler 2 requ[ete.


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 315
    Par défaut rassembler 2 requ[ete.
    bonjour, je suis en ms sql
    j'Aimerais faire en sorte que ces 2 requete ne fasse qu'une
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT month(dateDebut),year(dateDebut), Count(Distinct dateDebut), 
    FROM maTable
    WHERE (dateDebut) Between 2004 And year(GETDATE()))
    AND utilisateur in ('User 1','user2') 
    GROUP BY month(dateDebut),year(dateDebut),
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT month(dateFin),year(dateFin), Count(Distinct dateFin), 
    FROM maTable
    WHERE (dateFin) Between 2004 And year(GETDATE()))
    AND utilisateur in ('User 1','user2') 
    GROUP BY month(dateFin),year(dateFin),
    En gros, çca sort le nombre de tâche ouvert par mois, de 2004 a 2005
    et l'autre requete sort le nombre de tâche fermé dans la même préiode.
    j'Aimerais faire en sorte que les deux requete ne fasse qu'une et que mes nombre de tâche fermé et ouverte s'Affihce, est-ce possible?
    merci de me érpondre

  2. #2
    Membre éprouvé
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Par défaut
    Bonsoir,

    Essaies-ça, je pense que ça fait ce que tu veux.

    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
    SELECT  MoisDebut,
    	AnneeDebut,
    	ouvertures,
    	Clotures
    FROM
    (
    SELECT 	month(dateDebut) as MoisDebut, 
    	year(dateDebut) as AnneeDebut, 
    	count(Distinct dateDebut) as Ouvertures
    FROM 	maTable 
    WHERE 	dateDebut between date('01/01/2004') And date('31/12/2005')
    AND 	utilisateur in ('User 1','User 2') 
    GROUP BY month(dateDebut),
    	year(dateDebut) 
    ) as Debut 
    inner join 
    (
    SELECT 	month(dateFin) as MoisFin, 
    	year(dateFin) as AnneeFin, 
    	count(Distinct dateFin) as Clotures
    FROM 	maTable 
    WHERE 	dateFin between date('01/01/2004') And date('31/12/2005')
    AND 	utilisateur in ('User 1', 'User 2') 
    GROUP BY month(dateFin), 
    	year(dateFin)
    ) as Fin
    on debut.moisdebut = fin.moisfin
    and debut.anneedebut = fin.anneefin;
    A +

  3. #3
    Membre chevronné

    Inscrit en
    Août 2005
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 220
    Par défaut Rassembler 2 requêtes
    Est-ce que un simple UNION entre les deux requêtes ne te donnerait pas le bon résultat ?

  4. #4
    Membre éprouvé
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Par défaut
    re,

    Citation Envoyé par xmarabout
    Est-ce que un simple UNION entre les deux requêtes ne te donnerait pas le bon résultat ?
    L'ensemble obtenu est différent.
    Faire 1 choix en fonction du résultat à obtenir.

    Avec jointure :
    MMAA début, MMAA fin, ouvertures, clôtures
    01/2005,01/2005,10,8
    02/2005,02/2005,5,6
    Avec union :
    MMAA début, MMAA fin, ouvertures, clôtures
    01/2005,01/2005,10,null
    02/2005,02/2005,5,null
    01/2005,01/2005,null,8
    02/2005,02/2005,null,6

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    D'accord avec TheLeadingEdge, sauf que je ferais un FULL OUTER JOIN plutôt qu'un INNER JOIN, à moins qu'il existe une table Calendrier avec laquelle faire deux LEFT OUTER JOIN (encore mieux), sauf bien sur si la volumétrie permet d'affirmer sans risque d'erreur, que chaque mois il y aura des ouvertures et des fermeture....

  6. #6
    Membre éprouvé
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Par défaut
    Re,

    Bien vu Médiat (comme d'hab. ;-), perfectionniste va ;-))
    TTefois 1 Full Outer Join c'est peut être 1 peu radical, non? 1 Left Outer Join suffirait je pense, il est en effet peu probable qu'il y ait des fins de taches sans début de tâche.

    A +

  7. #7
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Citation Envoyé par TheLeadingEdge
    il est en effet peu probable qu'il y ait des fins de taches sans début de tâche.
    Avec une seule tâche, il est possible d'avoir une fin de tâche en février pour une ouverture en janvier .
    Bien sur si le système gère des milliers de tâches par an la probabilité de tomber sur le problème peut être faible, voire nulle, mais là c'est au fonctionnel de se déterminer...

  8. #8
    Membre éprouvé
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Par défaut
    Effectivement, comme il y a 1 borne inférieure à la rq, il existe 1 possibilité d'avoir des fins de tâches sans début...
    C bien ce que je disais :
    Citation Envoyé par TheLeadingEdge
    Bien vu Médiat (...) perfectionniste va
    A +

Discussions similaires

  1. comment rajouter un caractère " ' " dans une requê
    Par GDVL dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 30/07/2004, 16h58
  2. rassembler enregistrements d'un recordset
    Par billoum dans le forum ASP
    Réponses: 2
    Dernier message: 17/03/2004, 10h09
  3. [Trigger] comment savoir que la bd a ete modifiee
    Par corwin_d_ambre dans le forum Bases de données
    Réponses: 7
    Dernier message: 13/02/2004, 12h50
  4. Réponses: 2
    Dernier message: 09/02/2004, 15h38

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