Requete imbriquée

Résolu/Fermé
gvc001 Messages postés 20 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 1 juin 2010 - 20 avril 2010 à 09:21
gvc001 Messages postés 20 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 1 juin 2010 - 22 avril 2010 à 10:40
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

dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 157
Modifié par dragondark le 20/04/2010 à 10:17
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
gvc001 Messages postés 20 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 1 juin 2010
20 avril 2010 à 11:42
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
dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 157
Modifié par dragondark le 20/04/2010 à 14:31
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
gvc001 Messages postés 20 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 1 juin 2010
22 avril 2010 à 10:40
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