Requete imbriquée

Résolu
Bonjour ,

je me bats avec cette requete depuis hier,
au fait , je souhaiterai avoir mon affichage de cette maniere :

le nombre d'incident ouvert n 'est pas forcement egal à celui fermé dans la logique de ma requete sur un intervalle de date.

OUVERT FERME ENTITE
29 29 BAD
135 135 CRC
24 24 ISIM
2 2 IST
10 10 PIM

sauf que cette requete me renvoie la valeur de fermer sur le champs ouvert.

SELECT COUNT( t1.id_ticket ) AS OUVERT, COUNT( t2.id_ticket ) AS FERME, t1.ENTITE
FROM 'tab_ars1' t1, 'tab_ars1' t2
WHERE (
t2.ENTITE = t1.ENTITE
AND t1.date_creation = t2.date_creation
)
AND (
t2.date_creation
BETWEEN '2010-01-31 00:00:00'
AND '2010-02-28 00:00:00'
)
AND (
t1.etat <> 'Fermé'
OR t2.etat <> 'Résolu'
)
AND (
t2.etat = 'Fermé'
OR t2.etat = 'Résolu'
)
GROUP BY t1.ENTITE

Merci de votre aide,
Amicalement

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. tu a combien de possibilité pour tes états? résolut, fermer, en cours?

    car ce code :
    AND ( 
    t1.etat <> 'Fermé' 
    OR t2.etat <> 'Résolu' 
    ) 
    AND ( 
    t2.etat = 'Fermé' 
    OR t2.etat = 'Résolu' 
    )


    est un peu inutile :o

    en gros tu dis je veux que a soit different de 1 et que a = 2

    tu simplifie par a = 2 et c'est bon
    t1.etat <> 'Fermé'  
    and(
    t2.etat = 'Fermé' 
    OR  
    t2.etat = 'Résolu')


    de plus
    AND ( 
    t2.etat = 'Fermé' 
    OR t2.etat = 'Résolu' 
    )
    </code>

    c'est normal?
    tu veux les résultats pour fermer et résolut? ou c'est une erreur

    Cordialement
    Dragondark de lonlindil

    LE POUVOIR EST NOTRE GLOIRE
    LE COEUR NOTRE HONNEUR
    1. slt,
      Merci pour ton intêret.

      ma requête doit afficher tous les incident suivant leur appartenance au champs ENTITE qui sont crées (Ouvert peut importe mais si elle sont fermés par la suite ou aussitot) sur l'intervalle d'une date et ceux là qui sont fermés sur le même intervalle.

      En d'autre terme , on peut compter un incident à la fois cré et fermé.

      En un mot : Tous les incident crés sur une periode et tous ceux qui sont fermés.
      un incident peu être cré et fermé

      Je ne me base que sur la date de création sachant qu'aussi bien ceux Fermé ou résolu et ceux non fermé doivent au préalable être créé à cette intervalle de Date.

      je galere avec cette requete

      Merci de votre aide
      1. je n'ai pas tous compris mais ton erreur viens pas de ca? :

        AND (  
        t1.etat <> 'Fermé'  
        OR t2.etat <> 'Résolu'  
        )  
        AND (  
        t2.etat = 'Fermé'  
        OR t2.etat = 'Résolu'  
        )   
        


        ?
        t2.etat <> 'Résolu' OR t2.etat = 'Résolu'


        sinon :
        select id_ticket from tab_ars1   
        where t2.date_creation  
        BETWEEN '2010-01-31 00:00:00'  
        AND '2010-02-28 00:00:00'  
        AND etat  <> 'fermer'


        ca ca te donne les id des ticket qui sont aps fermer

        select id_ticket from tab_ars1   
        where t2.date_creation  
        BETWEEN '2010-01-31 00:00:00'  
        AND '2010-02-28 00:00:00'  
        AND (etat  = 'fermer' OR t2.etat = 'Résolu')


        ca ceux qui son fermer et fini
        SELECT COUNT( t1.id_ticket ) AS OUVERT, COUNT( t2.id_ticket ) AS FERME, t1.ENTITE  
        FROM 'tab_ars1' t1, 'tab_ars1' t2  
        WHERE (t1.id_ticket in (select id_ticket from tab_ars1   
        where t2.date_creation  
        BETWEEN '2010-01-31 00:00:00'  
        AND '2010-02-28 00:00:00'  
        AND (etat  = 'fermer' OR t2.etat = 'Résolu')) ) 
        AND ( t2.id_ticket in
        (select id_ticket from tab_ars1   
        where t2.date_creation  
        BETWEEN '2010-01-31 00:00:00'  
        AND '2010-02-28 00:00:00'  
        AND etat  <> 'fermer'))


        c'est ca?

        Cordialement
        Dragondark de lonlindil
        LE POUVOIR EST NOTRE GLOIRE
        LE COEUR NOTRE HONNEUR
        1. slt

          j'ai utilisé finalement les jointures et ça marche :

          Merci de vos inspirations.

          on ne sait jamais ça peut aider :

          SELECT t1.entite, COUNT( t2.date_creation ) AS CREES, count(t3.id_ticket) AS FERME

          FROM tab_ars1 AS T1
          JOIN tab_ars1 AS T2 ON T1.entite = T2.entite AND t2.id_ticket= t1.id_ticket

          LEFT JOIN tab_ars1 AS T3
          ON T1.entite = T3.entite
          AND t3.id_ticket= t1.id_ticket
          AND t3.etat = 'Fermé'

          WHERE t2.date_creation > '2010-01-31'
          AND t2.date_creation < '2010-02-28'

          GROUP BY t1.entite