requête sql count(*) minus

requête sql count(*) minus - SQL/NoSQL - Programmation

Marsh Posté le 24-05-2007 à 12:36:19    

Bonjour à tous
j essaie d ecrire une requête sql  
Je veux la difference ( quantite) entre le nombre d  enregistrements qui repondent à une requete et le nombre d enregistrements qui repondent à une 2 eme requete de la même table
select count (*) from (
select count (*) from table where xxxxxxx
minus
select count(*) from table where xxxxxx
)
et cela ne fonctionne pas
Pouvez vous m aider
Je vous remercie

Reply

Marsh Posté le 24-05-2007 à 12:36:19   

Reply

Marsh Posté le 24-05-2007 à 13:41:49    

Minus n'est pas l'instruction à utiliser, car minus n'est pas fait pour soustraire deux nombres mais deux sous-ensembles.
Il faut faire un - (moins) quelques part, mais la syntaxe de ce genre de requête dépend du moteur de la base de données, et il faudrait préciser si vous travailler sous Access, Oracle, Sybase, MySQL, ....

Reply

Marsh Posté le 24-05-2007 à 17:35:45    

En reprenant la même structure :
 

Code :
  1. SELECT sum(nb) FROM (
  2. SELECT count(*) nb FROM TABLE WHERE xxxxxxx
  3. union ALL
  4. SELECT count(*) * -1 nb FROM TABLE WHERE xxxxxx
  5. )

Reply

Marsh Posté le 24-05-2007 à 17:37:10    

Et en reprenant MINUS :
 

Code :
  1. SELECT count(*)
  2. FROM
  3. (
  4.  SELECT 1
  5.  FROM TABLE
  6.  WHERE xxxxxxx
  7.  MINUS
  8.  SELECT 1
  9.  FROM TABLE
  10.  WHERE xxxxxx
  11. )

Reply

Marsh Posté le 25-05-2007 à 00:00:15    

Jolies solutions :jap:

Reply

Marsh Posté le 25-05-2007 à 00:32:07    

Pour la seconde, après déplacement de ma réflexion du rectum vers le bulbe rachidien, je m'apperçois que "select 1" ça ne marchera pas du tout ;) Il faut sélectionner la PK ou autre élément permettant à MINUS de retrouver les éléments à enlever du résultat :D

Reply

Sujets relatifs:

Leave a Replay

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