[MySQL] Savoir combien de champs sont renseignés parmi 7

Savoir combien de champs sont renseignés parmi 7 [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 27-03-2015 à 14:52:41    

Bonjour,
 
      Je dois faire une requête un peu particulière, je me demande si elle est possible en SQL.
 
Dans la base de données, j'ai 7 numéros de téléphone répartis un peu partout dans différentes tables.
Je voudrais savoir le nb de personnes qui ont 1 ou 2 ou 3 ou 4 ou 5 ou 6 numéros de renseignés parmi ces 7 numéros maximum.
Pour le 0 et le 7 je peux le faire assez facilement (personne in () and in () etc et inversement not in).
 
Je me demandais s'il existait un moyen de transformer la "non nullité" d'un champ en 1 et sa "nullité" en 0, puis faire la somme d'une manière ou d'une autre ?
 
Si qqun peut m'aider :jap:


Message édité par sire de Botcor le 27-03-2015 à 14:53:15

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 27-03-2015 à 14:52:41   

Reply

Marsh Posté le 27-03-2015 à 15:12:34    

Citation :

Je me demandais s'il existait un moyen de transformer la "non nullité" d'un champ en 1 et sa "nullité" en 0, puis faire la somme d'une manière ou d'une autre ?


 
Oui avec un case:
 

Code :
  1. CASE WHEN numero1 IS NOT NULL THEN 1 ELSE 0 END


 
Ensuite tu peux très bien sommer le résultat du case:
 

Code :
  1. sum(CASE WHEN numero1 IS NOT NULL THEN 1 ELSE 0 END)


 
Avec le GROUP BY qui va bien.

Reply

Marsh Posté le 27-03-2015 à 15:19:59    

Merci, je ne connaissais pas ce "CASE" en SQL, je vais me pencher là-dessus :jap:


Message édité par sire de Botcor le 27-03-2015 à 15:20:50

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 27-03-2015 à 16:30:09    

Après, vue que tu parles que les champs tél d'une personne sont mis dans différentes tables (encore une BD bien conçu, j'ai l'impression :/), tu peux aussi faire des LEFT JOIN et compter les valeurs non nulles obtenues. mais sans MCD, difficile de te donner une réponse plus précise...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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