j'arrive pas a terminer cette requete !!!

j'arrive pas a terminer cette requete !!! - SQL/NoSQL - Programmation

Marsh Posté le 21-11-2005 à 14:30:56    

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 ?

Reply

Marsh Posté le 21-11-2005 à 14:30:56   

Reply

Marsh Posté le 21-11-2005 à 14:41:18    

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) ...

Reply

Marsh Posté le 21-11-2005 à 14:41:50    

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
Reply

Marsh Posté le 21-11-2005 à 14:47:35    

apparement il a pas champ type OP

Reply

Marsh Posté le 21-11-2005 à 14:52:41    

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é  
 
:(

Reply

Marsh Posté le 21-11-2005 à 14:57:31    

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) ...  
 

Reply

Marsh Posté le 21-11-2005 à 15:12:44    

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

Reply

Marsh Posté le 21-11-2005 à 16:42:46    

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 () ;)

Reply

Marsh Posté le 21-11-2005 à 16:44:00    

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)

Reply

Marsh Posté le 22-11-2005 à 09:05:00    

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

Reply

Marsh Posté le 22-11-2005 à 09:05:00   

Reply

Marsh Posté le 22-11-2005 à 09:31:48    

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

Reply

Marsh Posté le 22-11-2005 à 09:43:09    

sous Oracle il n'y a aucun soucis ;)

Reply

Marsh Posté le 22-11-2005 à 09:54:11    

j imagine :(

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed