Requête SQL : comptage des colonnes avec une valeur - SQL/NoSQL - Programmation
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).
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.
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'
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,
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...
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
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 ?
Merci pour vos réponses
Message édité par Thordax le 14-01-2009 à 15:48:37
---------------
Atari 520 ST 256 Ko