Requête SQL : comptage des colonnes avec une valeur

Requête SQL : comptage des colonnes avec une valeur - SQL/NoSQL - Programmation

Marsh Posté le 14-01-2009 à 15:47:49    

Bonjour,
 
Je souhaite faire une requete SQL permettant de me donner le nombre de colonnes d'une ligne de valeurs pour lesquelles le contenu est différent de A.
 
Exemple :
 
Colonne :        
 
Index Nom Prénom Age Sexe Ville Taille Poids
1 Pierre 15 M Tours 176 65
2 Sophie 14 F Briançon A A
 
Pour la ligne d'index 1 : il n'y a aucune ligne avec la valeur A => résultat de ma requête à créer = 0.
Pour la ligne d'index 2 : Il y a deux A dans cette ligne => résultat = 2.  
 
Comment faire pour compter ces deux 'A' en question ? :d
 
Merci pour vos réponses :hello:


Message édité par Thordax le 14-01-2009 à 15:48:37

---------------
Atari 520 ST 256 Ko
Reply

Marsh Posté le 14-01-2009 à 15:47:49   

Reply

Marsh Posté le 20-01-2009 à 21:10:47    

Ton explication n'est pas très compréhensive. En tout cas, tu ne peux pas compter le nombre de A présent dans un enregistrement (je pense que c'est ce que tu appelles une ligne de valeurs).


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 20-01-2009 à 23:07:47    

Thordax > Qu'elle base de donnée? En tout cas tu peux t'attendre à avoir droit à une requête super longue et répétitive vu que les opérations de tests seront à répéter pour chaque colonne à tester.

Reply

Marsh Posté le 21-01-2009 à 10:01:56    

omega2 a écrit :

Thordax > Qu'elle base de donnée? En tout cas tu peux t'attendre à avoir droit à une requête super longue et répétitive vu que les opérations de tests seront à répéter pour chaque colonne à tester.


+ 1
 
SQL est un langage de traitement de Bases de Données Relationnelles.
Par définition, les "colonnes" sont sensées n'avoir aucun rapport, et donc rien n'est prévu pour faire un travail sur plusieurs colonnes.
 
La solution la plus simple, ce serait d'utiliser un programme en surcouche.
Exemple (parce que, là, je ne suis pas très clair) : PHP.
=> Tu fais une requête qui va chercher les enregistrements dans lesquels un des champs est égal à 'A', puis tu traites avec PHP (ou autre) pour compter, dans chaque enregistrement, le nombre de champs à 'A'...
 
sinon, voir suivant le SGBD utilisé : on peut peut-être rajouter un champ calculé qui vaut 'nombre de colonnes égales à A'

Reply

Marsh Posté le 21-01-2009 à 10:07:28    

Salut,
 
Sinon, tu concatènes tout tes champs avec le +
 
SELECT Nom +Prenom + ....
FROM
 
après, il faudrait que tu développes une petite fonction dans ton SGBD, du genre CompteA(str) int, à laquelle tu passes une chaîne de caractère et qui te retourne le nombre de A qu'il y a dans cette chaîne (ça se fait assez bien dans une fonction), et après, tu fais :  
 
SELECT CompteA(Nom +Prenom + ....)
FROM ...
WHERE ...
 
Bon courage,

Reply

Marsh Posté le 21-01-2009 à 22:50:02    

Salut, j'ai eu une réponse claire et précise ici :
 
http://www.developpez.net/forums/d [...] nt-donnee/
 
Des fois que ça puisse aider à quelqu'un...


---------------
Atari 520 ST 256 Ko
Reply

Marsh Posté le 26-01-2012 à 22:42:46    

Voici un exemple de commande qui fait je crois quelque chose de similaire à ce dont tu parle.  
Faudra seulement que tu remplace les 1 par une façon de déterminer si les chaines contienne des 'A'.
 
SELECT AA.ID_OPERATION
FROM (SELECT ID_OPERATION
      FROM CC_OPERATION_PT  
      WHERE CODE_ALTERNATIVE = 1
      UNION ALL
      SELECT ID_OPERATION
      FROM CC_OPERATION_PT
      WHERE CODE_OBLIGATOIRE = 1
      UNION ALL
      SELECT ID_OPERATION
      FROM CC_OPERATION_PT
      WHERE CODE_SOUS_TRAITEE = 1
      UNION ALL
      SELECT ID_OPERATION
      FROM CC_OPERATION_PT
      WHERE CODE_SOUS_TRAITEE = 1) AA
GROUP BY AA.ID_OPERATION
HAVING COUNT(AA.ID_OPERATION) > 1

Reply

Marsh Posté le 27-01-2012 à 23:18:02    

3 ans plus tard [:implosion du tibia]


---------------
Atari 520 ST 256 Ko
Reply

Sujets relatifs:

Leave a Replay

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