|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Étudiant Inscription : décembre 2010 Messages : 5 ![]() |
Bonsoir,
ma base est, entre autres, constituée de 3 tables avec les champs suivants : client : id_filière, id_promo filiere : id, nom (valeur : Info, Elec, Telecom) promo : id, nom (valeur : 1A, 2A, 3A) Ce que j'aimerai faire, c'est un tableau qui donne le nombre de clients appartenant à une promo et à une filière. Par exemple : Code :
Sachant que par la suite je dois pouvoir calculer la somme sur les lignes et les colonnes. Mais ça, je pensais le faire en PHP. Merci par avance. Je vais continuer à chercher de mon côté. |
||
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() |
Bonsoir,
Citation:
Au mieux il est possible d'avoir un résultat du style Promo | Filière | Count Ce résultat contiendra toutes les données souhaitées, mais présentées différemment. Ensuite en PHP, ça ne devrait pas être très compliqué pour fabriquer le tableau.
__________________
www.nudge.org Surveillez et optimisez vos applications Java |
|
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 528 ![]() |
Saluton,
Tu peux t'inspirer de mon article afférent à l'émulation d'un tableau croisé [quasi]-dynamique dont le lien est dans ma signature.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
00
|
|
|
#4 | ||
![]() ![]() |
Pas si tordu que ça ! Essaie ceci :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Étudiant Inscription : décembre 2010 Messages : 5 ![]() |
@CinePhil : J'obtiens cette erreur :
Code :
avant de poster sur le forum j'avais lu ton article. Dans la création de la première table, il manque une virgule. Mais pour les requetes qui suivent (pour la construction du tableau) j'ai une erreur avec une "mauvaise utilisation" du ROLLUP. Merci pour vos réponses |
||
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 937 ![]() |
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
10
|
|
|
#7 | ||
![]() ![]() |
Oups ! Au temps pour moi ! SQLPro a raison !
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
10
|
|
|
#8 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2010 Messages : 5 ![]() |
Merci beaucoup ! ca fonctionne !
Maintenant, j'aimerai comprendre la requête. En fait, je l'ai déjà vu à plusieurs reprises et je me demande toujours à quoi ça sert : Code :
SUM(CASE WHEN f.nom = 'Informatique' THEN 1 ELSE 0 END) AS Info Merci pour votre aide |
|
|
00
|
|
|
#9 |
![]() ![]() |
Si tu voulais compter le nombre d'éléments par nom de filière, un simple COUNT(*) suffirait. Là comme tu veux une colonne par nom de filière, il faut considérer chaque cas.
À chaque ligne, selon le nom de la filière, on affecte la valeur 1 ou 0 aux colonnes des filières puis le GROUP BY additionne ces chiffres. Comme on n'additionne que des 1 ou des 0, cela revient au même que de faire un COUNT(*) par filière. L'extrait de la requête que tu as donné dans ton message peut se lire : Dans le cas où la colonne f.nom vaut 'Informatique', j'affecte la valeur 1, sinon 0 puis je fais la somme de toutes les valeurs dans une colonne artificielle que j'appelle Info.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
|
|
#10 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2010 Messages : 5 ![]() |
Merci pour cette explication claire.
Maintenant, je vais faire les sommes sur les colonnes et les lignes en php parce que je ne sais pas si c'est possible ou du moins utile en SQL. Et si je crée une view à partir de ma requete qui crée le tableau, ça va etre simple à utiliser en php. Merci à tous de m'avoir aidé aussi rapidement. ![]() je vais mettre le sujet en résolu. |
|
|
00
|
|
|
#11 | |||
![]() ![]() |
Citation:
Tu peux ajouter le total par ligne dans la requête avec un simple COUNT(*) : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#12 | |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 937 ![]() |
Citation:
Avec n'importe quel autre SGBDR c'est un jeu d'enfant en utilisant GROUP BY CUBE ou GROUP BY ROLLUP A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
|
00
|
|
|
#13 | |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 528 ![]() |
Citation:
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
|
00
|
|
|
#14 |
![]() ![]() |
Je ne sais pas si ça me servira un jour mais merci du renseignement.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#15 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2010 Messages : 5 ![]() |
D'accord, merci pour le renseignement. J'avais vu l'utilisation de CUBE et ROLLUP, mais ça ne marchait pas avec MySql. Maintenant je comprends mieux pourquoi !
Bonne soirée et merci à tous. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com