Requete imbriquée

Résolu
gvc001 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
gvc001 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. dragondark Messages postés 481 Statut Membre 159
     
    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
    0
  2. gvc001 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
     
    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
    0
  3. dragondark Messages postés 481 Statut Membre 159
     
    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
    0
  4. gvc001 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
     
    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
    0