Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/09/2011, 11h46   #1
Futur Membre du Club
 
Femme
Inscription : juin 2011
Messages : 74
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 74
Points : 15
Points : 15
Par défaut calculate sum of columns

Bonjour à tous,
J'ai un table comme ça:
A1 A2 A3 ... An A
11 21 75 ... 12 0
51 57 47 ... 14 0
Pour la colonne A, je voudrais changer les valeurs à la somme de (A1+A2+...+An)
J'ai trouvé une façon pour sommer les valeurs dans les colonnes, comme ça:
Code :
1
2
3
 
SELECT A1+A2+A3+...+An AS sumA
FROM myTable;
Mais je sais pas comment à faire pour A1+A2+A3+...+An. J'ai enregistré les noms des colonnes dans un array, et je veux utiliser for() pour imprimer chaque nom. Comment à faire ça?

Ou il y a d'autre façon pour calculer la somme des colonnes?

Merci beaucoup!
laomaotou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 12h33   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Je ne comprends pas ta demande !
Citation:
Pour la colonne A, je voudrais changer les valeurs à la somme de (A1+A2+...+An)
Si tu veux changer une valeur dans une colonne, tu dois utiliser une requête UPDATE.

Citation:
J'ai trouvé une façon pour sommer les valeurs dans les colonnes
Effectivement, pour faire la somme des colonnes A1 à An pour une ligne, il suffit de les additionner dans le SELECT. Ta requête est donc bonne.

Citation:
Mais je sais pas comment à faire pour A1+A2+A3+...+An.
Ben, tu viens de le faire !

Citation:
J'ai enregistré les noms des colonnes dans un array, et je veux utiliser for() pour imprimer chaque nom.
"array", "for()", imprimer... ce n'est plus du MySQL là !
__________________
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 !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 13h25   #3
Futur Membre du Club
 
Femme
Inscription : juin 2011
Messages : 74
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 74
Points : 15
Points : 15
Merci et je vais vous expliquer.
Je utilise PHP et MySQL
Au début, dans la base, il y a les colonnes A1,A2,...An.
Et maintenant, je voudrais ajouter une colonne 'A', la valeur de 'A' est la somme des colonnes A1+A2+...+An
dans MySQL, j'ai ajouté une colonne 'A', la valeur défaute est 0, c'est puorquoi je veux changer la valeur de la colonne 'A'
Et pour changer la valeur de la colonne 'A', d'abord, je dois calculer la somme des colonnes A1,A2,... . C'est pourquoi je veux utiliser
Code :
1
2
 
SELECT A1+A2+...+An AS sumAs FROM myTable;
pour A1+A2+...+An, maintenant, je sais pas tous les nom des colonnes, donc je dois récupérer les noms dans la base. Et puis je les enregistrer dans un array 'arrAs[]'.
Mais je sais pas comment à utiliser ce array dans select? Bien sûr,
Code :
1
2
 
SELECT arrAs[] FROM myTable;
n'est pas correct.

Vous avez une idée? Merci
laomaotou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 13h29   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Comment se fait-il que tu ne connaisses pas toutes les colonnes de la table que tu interroges ?

Par ailleurs, tu n'as pas besoin de d'abord calculer la somme, tu peux faire cette somme directement dans la requête UPDATE :
Code :
1
2
UPDATE la_table
SET A = A1 + A2 + A3 -- ... jusqu'à An
__________________
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 !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 13h43   #5
Futur Membre du Club
 
Femme
Inscription : juin 2011
Messages : 74
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 74
Points : 15
Points : 15
C'est parce que je voudrais récupérer les noms dans la base chaque fois que j'exécute cette requetre.
Si il y a les modifications dans la base, je n'a pas besoin de changer mon code.
laomaotou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 13h57   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Si tu veux récupérer les noms et les caractéristiques des colonnes d'une table, tu peux interroger la vue information_schema.COLUMNS.
__________________
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 !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 14h07   #7
Futur Membre du Club
 
Femme
Inscription : juin 2011
Messages : 74
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 74
Points : 15
Points : 15
Citation:
Envoyé par CinePhil Voir le message
Si tu veux récupérer les noms et les caractéristiques des colonnes d'une table, tu peux interroger la vue information_schema.COLUMNS.
J'ai fait une requetre pour récupérer les noms des colonnes, et j'ai enregistré les valeurs dans un array 'arrColA'.
Et dans mysql, comment je peux utiliser ce array?
?
Merci
laomaotou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 14h32   #8
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Il faut que tu construises dynamiquement ta requête en PHP :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$sql = "
    UPDATE la_table
    SET A = 
";
 
FOR(i = 0; i < count($arrColA); i++)
{
    IF(i > 0)
    {
        $sql .= ' + ';
    }
 
    $sql .= $arrColA[i];
}
__________________
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 !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h50.


 
 
 
 
Partenaires

Hébergement Web