cellules liées dans une BDD ?

  • Créateur du sujet Créateur du sujet Halbert
  • Date de début Date de début
A

Anonyme

Invité
Bonjour

Est-il possible que dans une table d'une BDD, une colonne soit fonction des autres. Par exemple, trois colonnes contiennent des notes et la quatrième est une moyenne des trois premières ?

Merci

Albert
 
Tu n'as pas besoin de définir un autre champ, tout se passera au moment de la requête où tu pourras définir des champs 'aliasé' avec l'instruction AS, je l'illustre par un exemple :

Imagine ta table avec la colonne n1, n2, n3 et n4; tu voudrais y ajouter un 5ème champ dynamique contenant la somme de n1, n2, n3 et n4.

Bloc de code:
mysql> SELECT (n1+n2+n3+n4) [COLOR="Red"]AS[/COLOR] somme FROM test;
+-------+
| somme |
+-------+
|   101 |
+-------+
1 row in set (0.01 sec)

Et voilà !


Note: j'ai pris des valeurs fictives pour trouver une somme de 101...
 
je n'ai jamais testé avec mysql mais avec oracle il existe un truc vraiment très pratique et très (trop) peu utilisé qui s'appele trigger

c'est dispo a partir de mysql 5 apparemment et je te conseil vivement de t'y intéresser car cela permet d'automatiser des tâches...

bon courrage
 
canibal a dit:
je n'ai jamais testé avec mysql mais avec oracle il existe un truc vraiment très pratique et très (trop) peu utilisé qui s'appele trigger

c'est dispo a partir de mysql 5 apparemment et je te conseil vivement de t'y intéresser car cela permet d'automatiser des tâches...

bon courrage
C'est effectivement très pratique, mais je crois que la majorité des hébergeurs n'ont pas encore passé à MySQL 5.
 
fissunix a dit:
Tu n'as pas besoin de définir un autre champ, tout se passera au moment de la requête où tu pourras définir des champs 'aliasé' avec l'instruction AS, je l'illustre par un exemple :

Imagine ta table avec la colonne n1, n2, n3 et n4; tu voudrais y ajouter un 5ème champ dynamique contenant la somme de n1, n2, n3 et n4.

Bloc de code:
mysql> SELECT (n1+n2+n3+n4) [COLOR=Red]AS[/COLOR] somme FROM test;
+-------+
| somme |
+-------+
|   101 |
+-------+
1 row in set (0.01 sec)
Et voilà !


Note: j'ai pris des valeurs fictives pour trouver une somme de 101...

Merci j'essaye tout de suite
Albert
 
fissunix a dit:
Tu n'as pas besoin de définir un autre champ, tout se passera au moment de la requête où tu pourras définir des champs 'aliasé' avec l'instruction AS, je l'illustre par un exemple :

Imagine ta table avec la colonne n1, n2, n3 et n4; tu voudrais y ajouter un 5ème champ dynamique contenant la somme de n1, n2, n3 et n4.

Bloc de code:
mysql> SELECT (n1+n2+n3+n4) [COLOR=Red]AS[/COLOR] somme FROM test;
+-------+
| somme |
+-------+
|   101 |
+-------+
1 row in set (0.01 sec)
Et voilà !


Note: j'ai pris des valeurs fictives pour trouver une somme de 101...


Ca marche, les calculs se font : mais comment garder dans la colonne test les valeurs obtenues ?
Encore plus compliqué (pour moi!) :

Je dois faire un calcul style N1*C1+N2*C2 où C1 et C2 se trouvent sur une autre table : est-ce possible ?

Merci encore pour ton aide

Albert
 
canibal a dit:
je n'ai jamais testé avec mysql mais avec oracle il existe un truc vraiment très pratique et très (trop) peu utilisé qui s'appele trigger

c'est dispo a partir de mysql 5 apparemment et je te conseil vivement de t'y intéresser car cela permet d'automatiser des tâches...

bon courrage
J'ai l'impression que Free n'a pas ça
Albert
 
Je repose ma question plus clairement : est-il possible, comme avec un tableur, que dans une table d'une BDD, une colonne soit définie en fonction d'autres colonnes de la même table ou d'autres tables ?
Exemple : une colonne serait la moyenne de 2 colonnes de la m^me table avec des coefficients qui se trouvent sur une autre table ?
Albert
 
Halbert a dit:
Je repose ma question plus clairement : est-il possible, comme avec un tableur, que dans une table d'une BDD, une colonne soit définie en fonction d'autres colonnes de la même table ou d'autres tables ?
Exemple : une colonne serait la moyenne de 2 colonnes de la m^me table avec des coefficients qui se trouvent sur une autre table ?
Albert
Je crois que tu as de la misère a saisir la différence entre BD et Chiffrier, ce que tu veux faire ce fait très bien en excel. Par contre pour le faire dans une base de données tu dois le faire via une requête SQL à l'insertion dans ta table ou à l'affichage dans un tableau. Le champs calculé ne se voit pas comme tu le penses tu dois le faire via requête tu fais ton insertion champs 1 champs 2 ensuite tu fais le calcule et tu insères dans le champs 3. Ou lorsque tu affiche dans ton tableau de résultats champs 1 champs 2 ensuite un calcul que tu mets dans la 3eme colonne.

Marc-André
 
Marc-Andr&#233 a dit:
Je crois que tu as de la misère a saisir la différence entre BD et Chiffrier, ce que tu veux faire ce fait très bien en excel. Par contre pour le faire dans une base de données tu dois le faire via une requête SQL à l'insertion dans ta table ou à l'affichage dans un tableau. Le champs calculé ne se voit pas comme tu le penses tu dois le faire via requête tu fais ton insertion champs 1 champs 2 ensuite tu fais le calcule et tu insères dans le champs 3. Ou lorsque tu affiche dans ton tableau de résultats champs 1 champs 2 ensuite un calcul que tu mets dans la 3eme colonne.

Marc-André
Je me posais la question. Donc je rapatrie les données, je fais le calcul et je renvoie dans ma bdd, c'est ça ? J'ai encore des choses à apprendre....

Albert
 
Halbert a dit:
Je me posais la question. Donc je rapatrie les données, je fais le calcul et je renvoie dans ma bdd, c'est ça ? J'ai encore des choses à apprendre....

Albert
Presque, tu n'as pas besoin de renvoyer/enregistrer la réponse dans la bdd, ton résultat sera uniquement visible lorsque la requête aura été effectuée.
 
fissunix a dit:
Presque, tu n'as pas besoin de renvoyer/enregistrer la réponse dans la bdd, ton résultat sera uniquement visible lorsque la requête aura été effectuée.

Victoire, j'ai réussi. je renvoie quan m^me dans la bdd, car le résultat peut être demandé sur une autre page.
Si certain sont interessés....
Merci pour les aides
Albert