Requete sql

Résolu
cs_sirine_28_06_85 Messages postés 40 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 6 avril 2008 - 18 mai 2007 à 09:33
cs_sirine_28_06_85 Messages postés 40 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 6 avril 2008 - 18 mai 2007 à 19:31
voila mon tableau

joueur, codeaction, Reussite ou non, ----
ali, 1, oui, ----
slim, 2, non, ----
slim, 3, oui, ----
ahmed, 4, non, ----
ali, 5, oui, ----
ahmed, 6, non, ----
amin, 7, oui
Je voudrais une requete sql qui affiche ce résultat:

joueur, Nombre d’actions réussites, Nombre d’actions non réussites, ----
ali, 2, 0, ----
slim, 1, 1, ----
ahmed, 0, 2, ----
amin, 1, 0
 

39 réponses

chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
18 mai 2007 à 14:42
Bonjour,
Moi je dirais:
"SELECT Table1.joueur, " & _
"Count(Table1.action) AS CompteDeaction, " & _
"Sum(IIf([Table1]![reussiteounon]="oui",1,0)) AS Reussite, " & _
"Sum(IIf([Table1]![reussiteounon]="oui",0,1)) AS NonReussiten " & _
"FROM Table1 GROUP BY Table1.joueur;"

<hr />
© -En ce moment, c' est que pour Cannes...Mais moi aussi je tourne !   
(Rolling, mon poisson rouge)                                                      
3
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
18 mai 2007 à 09:39
Salut,

Il est beau ton tableau....Tiens moi, j'ai un bon cours SQL pour toi...

Et n'oublie pas la prochaine fois de lire le réglement et les mots magique :

BONJOUR et MERCI....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
18 mai 2007 à 10:35
Salut,

J'ai de gros doutes sur la possibilité de faire çà directement en SQL puisque les champs de sortie n'ont rien à voir avec les champs en entrée de ta table. C'est plutôt une routine de calcul (en VB, C, Ada, Java, C#, ... ) qui pourrait, à partir d'un certain nombre de  SELECT bien choisis, de construire un tableau avec les résultats que tu attends.

SELECT DISTINCTROW joueur from NomDeTaTable; => Te liste tous les joueurs, sans doublons.

A partir de cette liste, pour chaque élément :

SELECT COUNT(*) FROM NomDeTaTable Where (joueur='LeNomDuJoueur' AND Reussite='oui'); => donne le nombre d'actions réussies pour UN joueur donné.




Et il faut rassembler tous les éléments pour construire un tableau.







Manu


--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
0
cs_sirine_28_06_85 Messages postés 40 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 6 avril 2008
18 mai 2007 à 10:52
je veux une seul requete
merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
18 mai 2007 à 10:56
Salut,

Je veux...je veux...Mais je rêve là....Econs te répond et toi tu exiges....Réfléchis un peu avant de répondre et essaye de comprendre ce que l'on te propose...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_sirine_28_06_85 Messages postés 40 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 6 avril 2008
18 mai 2007 à 11:14
désolé Explorer,mais je suis stressé
c'est un projet de fin d'étude et je me suis bloquée ici
vraiment désolé et   bonne journée.merci
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
18 mai 2007 à 11:22
Salut,

Ben voui, les projets de fin d'études, ya pas finit d'avoir des messages sur le forum....

Je comprend que tu sois stréssé, mais je pense que la réponse que tu as eu de Econs, doit te permettre d'arriver à ton but...Maitenant si ton prof n'a pas mit de restriction au niveau du code, tu peux faire plusieurs requêtes de séléction...Comme expliquer par Econs(que je salue d'ailleurs)..

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_sirine_28_06_85 Messages postés 40 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 6 avril 2008
18 mai 2007 à 11:29
salut Explorer,merci pour votre compréhension.

bye et bonne journée.
si tu trouve quelque chose je serai heureuse que la réponse soit de ta part.
merci
0
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
18 mai 2007 à 12:27
Bonjour,

Peut-être :
Select t1.joueur, count(t1.joueur) as Reussi, count(t2.joueur) as PasReussi

from taTable t1, taTable t2

where t1.joueur t2.joueur and t1.Reussite 'oui' and t2.Reussite = 'non'

++
 Moustachu
0
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
18 mai 2007 à 13:11
Tiens, voilà, c'est beau et digeste :

select * from                                                
 (SELECT joueur,  count(*) as nbr                            
FROM testf              where reussite = 'non'      
 GROUP BY joueur  )  as  t1   full outer   join            
 (SELECT joueur,  count(*) as nbr                            
FROM testf              where reussite = 'oui'      
 GROUP BY joueur  )  as t2                                   
 on  t1.joueur = t2.joueur                                   

Si le full outer join n'existe pas dans ton SGBD tu peux aussi :

select t1.joueur, t1.nbr as KO, t2.nbr as OK from             
 (SELECT joueur,  count(*) as nbr                             
FROM testf              where reussite = 'non'       
 GROUP BY joueur  )  as  t1       left exception        join  
 (SELECT joueur,  count(*) as nbr                             
FROM testf              where reussite = 'oui'       
 GROUP BY joueur  )  as t2                                    
 on  t1.joueur = t2.joueur                                    
union  all                                                    
 select t2.joueur, t1.nbr as KO, t2.nbr as OK from            
  (SELECT joueur,  count(*) as nbr                            
 FROM testf              where reussite = 'non'      
  GROUP BY joueur  )  as  t1       right       outer     join 
  (SELECT joueur,  count(*) as nbr                            
 FROM testf              where reussite = 'oui'      
  GROUP BY joueur  )  as t2                                   
  on  t1.joueur = t2.joueur                                   

Ou faire autrement
++
 Moustachu
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
18 mai 2007 à 14:07
moustachu > Joli ... pas testé, mais à vue de nez, y'a un peu de çà. "Exception" n'est pas connu chez moi, pas plus que "full outer join", donc pas pu essayer.

Exploreur > Mes salutations également

Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
18 mai 2007 à 15:19
oups !
...='oui',1,0...
...='oui',0,1...

<hr />
© -En ce moment, c' est que pour Cannes...Mais moi aussi je tourne !   
(Rolling, mon poisson rouge)                                                      
0
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
18 mai 2007 à 15:59
C'est vrai qu'il faudrait connaître le SGBD...parce que le SUM IIF c'est pas pour tout le monde non plus...Mais c'est vrai que c'est plus court du coup :o)

++
 Moustachu
0
cs_sirine_28_06_85 Messages postés 40 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 6 avril 2008
18 mai 2007 à 17:09
salut chaibat05

j'ai essayé ton code,les actions réussites sava ils sont correctes mais les non réussites c'est non
comment je doit faire
merci
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
18 mai 2007 à 17:32
tu gardes donc tout sauf pour les non réusites tu modifies
<strike>"Sum(IIf([Table1]![reussiteounon]="oui",0,1)) AS NonReussiten</strike>
par
"Sum(IIf([Table1]![reussiteounon]='non',1,0)) AS NonReussiten

<hr />
© -En ce moment, c' est que pour Cannes...Mais moi aussi je tourne !   
(Rolling, mon poisson rouge)                                                      
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
18 mai 2007 à 17:37
tu peux même t' en passer puisque non_reussis=nbAction-reussis

<hr />
© -En ce moment, c' est que pour Cannes...Mais moi aussi je tourne !   
(Rolling, mon poisson rouge)                                                      
0
cs_sirine_28_06_85 Messages postés 40 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 6 avril 2008
18 mai 2007 à 17:46
salut chaibat05

voila mon code aprés l'exécution de la requete je veux afficher les données dans un mschart(histogramme) les actions réussites sont corrctes mais les non réussites sont fausses...voila mon code si tu peut m'aider svp c'est mon projet fin d'étude.

Set rst = dbs.OpenRecordset("SELECT individuelleoff.joueur, " & _
"Count(individuelleoff.codeio), " & _
"Sum(IIf([individuelleoff]![resI]=true,1,0)), " & _
"Sum(IIf([individuelleoff]![resI]=false,1,0)) " & _
"FROM individuelleoff GROUP BY individuelleoff.joueur;")
MSChart1.AllowSelections = False
With MSChart1
    .chartType = VtChChartType2dBar
    .ColumnCount = 2
    .RowCount = rst.RecordCount
   For i = 1 To rst.RecordCount
        .Row = i
        .Column = 1
        .RowLabel = rst.Fields(0)
         .Data = rst.Fields(2).Value
        .Column = 2
        .Data = rst.Fields(3).Value
        rst.MoveNext
   Next i

merci
0
cs_sirine_28_06_85 Messages postés 40 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 6 avril 2008
18 mai 2007 à 17:48
et bien sure le end with a la fin.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
18 mai 2007 à 18:01
With MSChart1
    .chartType = VtChChartType2dBar
    .ColumnCount = 2
    .RowCount = rst.RecordCount
   For i = 1 To rst.RecordCount
        .Row = i
       .Column = 1
        .RowLabel = rst.Fields(0) 'c' est le joueur
      .Column = 2
        .RowLabel = rst.Fields(1) 'c' est le total
        .Column = 3
       .Data = rst.Fields(2).Value 'les réussis
        .Column = 4
        .Data = rst.Fields(3).Value 'les non réussis
        rst.MoveNext
   Next i
Ens With


non ?
Si c' est pas ça ,je ne comprend pas pourquoi ça "déconne" à non_reussi !
En attendant d' en savoir plus , fais ceci :
Set rst = dbs.OpenRecordset("SELECT individuelleoff.joueur, " & _
"Count(individuelleoff.codeio), " & _
"Sum(IIf([individuelleoff]![resI]=true,1,0)), " & _
"FROM individuelleoff GROUP BY individuelleoff.joueur;")


For i = 1 To rst.RecordCount
        .Row = i
       .Column = 1
        .RowLabel = rst.Fields(0) 'c' est le joueur
      .Column = 2
        .RowLabel = rst.Fields(1) 'c' est le total
        .Column = 3
       .Data = rst.Fields(2).Value 'les réussis
        .Column = 4
        .Data = st.Fields(1).Value- rst.Fields(2).Value 'les non réussis
        rst.MoveNext
   Next i




<hr />




© -En ce moment, c' est que pour Cannes...Mais moi aussi je tourne !   



(Rolling, mon poisson rouge)                                                      
0
cs_sirine_28_06_85 Messages postés 40 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 6 avril 2008
18 mai 2007 à 18:21
encore non
0
Rejoignez-nous