Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1853 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  j'arrive pas a terminer cette requete !!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

j'arrive pas a terminer cette requete !!!

n°1249878
sharky01
Posté le 21-11-2005 à 14:30:56  profilanswer
 

Bonjours : soit la table Avis contenant les champs suivants : cloture (type booleen) et type_op (type texte).
 
le champ type_op peut prendre plusieurs valeurs dont "nouvelle intégration".
 
je souhaite faire une requête qui me compte les avis comme suit :
 
nouvelle intégration fermée <=> type_op = "nouvelle opération et cloture" = vrai  
nouvelle intégration ouverte <=> type_op = "nouvelle opération et cloture" = faux  
pas intégration fermé <=> type_op <> "nouvelle opération et cloture" = vrai  
pas intégration ouvert <=> type_op <> "nouvelle opération et cloture" = faux  
 
ce qui donnerait une affichage comme suit en mode feuille de données:
 
type                           | somme
----------------------------------------------
intégration fermé          | 12
intégration ouverte       | 13
non intégration ouverte | 14
non intégration fermé    | 51
 
pour l'instant j'ai écrit cette requete qui me donne le résultazt mais ne me permet pas de "légender" avec le type !!
 
 
SELECT [%$##@_Alias].som
FROM [
SELECT Count(*) AS som
FROM Avis_travaux
WHERE (Avis_travaux.type_op="NOUVELLE INTEGRATION" ) And (Avis_travaux.cloture=False)
UNION ALL
SELECT Count(*) AS som
FROM Avis_travaux
WHERE (Avis_travaux.type_op="NOUVELLE INTEGRATION" ) And (Avis_travaux.cloture<>False)
UNION ALL
SELECT Count(*) AS som
FROM Avis_travaux
WHERE (Avis_travaux.type_op<>"NOUVELLE INTEGRATION" ) And (Avis_travaux.cloture=False)
UNION ALL
SELECT Count(*) AS som
FROM Avis_travaux
WHERE (Avis_travaux.type_op<>"NOUVELLE INTEGRATION" ) And (Avis_travaux.cloture<>False)
 
]. AS [%$##@_Alias]
GROUP BY [%$##@_Alias].som;
 
Comment faire pour avoir la colonne avec le type de l'avis ?

mood
Publicité
Posté le 21-11-2005 à 14:30:56  profilanswer
 

n°1249889
betsamee
Asterisk Zeperyl
Posté le 21-11-2005 à 14:41:18  profilanswer
 

pourquoi tu ecris pas tout betement le type d'avis entre quotes?
ex:
SELECT [%$##@_Alias].som  
FROM [  
SELECT 'nouvelle intégration fermée ',Count(*) AS som  
FROM Avis_travaux  
WHERE (Avis_travaux.type_op="NOUVELLE INTEGRATION" ) And (Avis_travaux.cloture=False) ...

n°1249890
orafrance
Posté le 21-11-2005 à 14:41:50  profilanswer
 

Et ça ?
 

Citation :

SELECT type_op,cloture,count(*)  
  FROM Avis_travaux
GROUP BY  type_op,cloture


Message édité par orafrance le 21-11-2005 à 14:42:32
n°1249898
betsamee
Asterisk Zeperyl
Posté le 21-11-2005 à 14:47:35  profilanswer
 

apparement il a pas champ type OP

n°1249908
sharky01
Posté le 21-11-2005 à 14:52:41  profilanswer
 

Merci mais cela ne fonctionne pas le coup des quotes :(
Pour orafrance on ne peut pas regrouper par type_op car ce champs peut prendre de nombreuse valeur, mais ce qui nous interresse c'est est il sur "nouvelle intégration ou pas" ) on ne dispose pas de champ "type" qui contienne :
 
intégration fermé          
intégration ouverte      
non intégration ouverte
non intégration fermé  
 
:(

n°1249912
betsamee
Asterisk Zeperyl
Posté le 21-11-2005 à 14:57:31  profilanswer
 

c'est pas possible que ca marche pas t'as essaye :
SELECT [%$##@_Alias].type,[%$##@_Alias].som  
FROM [  
SELECT "nouvelle intégration fermée" as type,Count(*) AS som  
FROM Avis_travaux  
WHERE (Avis_travaux.type_op="NOUVELLE INTEGRATION" ) And (Avis_travaux.cloture=False) ...  
 

n°1249926
sharky01
Posté le 21-11-2005 à 15:12:44  profilanswer
 

Erreur de ma part pardon je n'avais pas inclus le type dans le groupe by
Oui ca marche merci ;)

n°1250023
orafrance
Posté le 21-11-2005 à 16:42:46  profilanswer
 

Sous Oracle il y a le CASE qui est pas mal :)
 
Sinon, avec DECODE il doit y avoir moyen de s'en sortir aussi. Pour les type_op, il suffit de faire un WHERE ... IN () ;)

n°1250026
betsamee
Asterisk Zeperyl
Posté le 21-11-2005 à 16:44:00  profilanswer
 

orafrance a écrit :

Sous Oracle il y a le CASE qui est pas mal :)
 
Sinon, avec DECODE il doit y avoir moyen de s'en sortir aussi. Pour les type_op, il suffit de faire un WHERE ... IN () ;)


peut on inclure un CASE dans le group by avec Oracle ? (sous MySQL c'est pas possible :D)

n°1250501
orafrance
Posté le 22-11-2005 à 09:05:00  profilanswer
 

je crains que non mais il doit y avoir moyen de s'en sortir avec une sous-requête :
 

Citation :

SELECT *  
FROM (SELECT CASE ... AS col1)
GROUP BY col1

mood
Publicité
Posté le 22-11-2005 à 09:05:00  profilanswer
 

n°1250512
betsamee
Asterisk Zeperyl
Posté le 22-11-2005 à 09:31:48  profilanswer
 

je sais que j'avais pas mal galere avec ca et il me semble que meme cette syntaxe ne soit pas acceptee

n°1250518
orafrance
Posté le 22-11-2005 à 09:43:09  profilanswer
 

sous Oracle il n'y a aucun soucis ;)

n°1250527
betsamee
Asterisk Zeperyl
Posté le 22-11-2005 à 09:54:11  profilanswer
 

j imagine :(


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  j'arrive pas a terminer cette requete !!!

 

Sujets relatifs
Un compeur dans une requete mySQL Un truc tout con mais je n'y arrive pas
[RESOLU] Comment faire une requête à l'intérieur d'une requête ?deux type de requete laquelle est la mieux ?
requete sql pas facile ...requete access
Optimisation du temps d'execution d'une requete sous oracleOptimisation de requete PL/SQL
Je rage : J'arrive pas a trier un tableau...Requete sql lors d'une impression
Plus de sujets relatifs à : j'arrive pas a terminer cette requete !!!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR