MySQL évaluer un champ

8 réponses
AuteurMessage

tybozz |
Membre

 

Inscrit le : 09/05/2005

# Le 15/01/2007 à 16:46

Bonjour à tous,

Je butte sur un petit souci.

J'ai une table maTable avec comme champs quelChamp, champ1, champ2, champ3 ... champN

quelChamp prend comme valeur 'champ1', 'champ2' ou 'champN'.

Et je veux en une requête mettre à jour tous les enregistrements, une requete du style : update maTable set eval(quelChamp) = eval(quelChamp) - 10.

Je cherche donc une sorte de eval()

Merci

Elevez un dragon !Ouvrir dans une nouvelle fenetre avant qu'il ne fasse le casting pour la star on the net academyOuvrir dans une nouvelle fenetre ou qu'il ne s'empiffre de bonbons à gogoOuvrir dans une nouvelle fenetre

MathieuC | Mathieu
Modérateur

Photo de MathieuC

Inscrit le : 15/07/2005

# Le 15/01/2007 à 17:18

Tu peux pas generer ta requete en PHP ? A ce moment la tu n'as plus besoin d'eval

Sinon, c'est a mon avis une structure de BDD qui n'est pas standard, est-ce que ca ne vaudrait pas le coup de la rendre standard ? Car la tu risque d'avoir plusieurs fois ce genre de probleme, et a un moment, ca risque de devenir ingerable

tybozz | Thibaud
Membre

 

Inscrit le : 09/05/2005

# Le 15/01/2007 à 17:21

non je ne peux pas le faire en php ca serait trop simple le faire en php m'obligerait à faire trop de requêtes.

Oui la structure n'est pas du tout standard mais c'est pour éviter de faire des requêtes trop lourdes, trop souvent

un rhume c'est pas bon pour réfléchir

Elevez un dragon !Ouvrir dans une nouvelle fenetre avant qu'il ne fasse le casting pour la star on the net academyOuvrir dans une nouvelle fenetre ou qu'il ne s'empiffre de bonbons à gogoOuvrir dans une nouvelle fenetre

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 15/01/2007 à 17:25

Si ton -10 est fixe et ta structure aussi, pourquoi ne pas faire tous les cas :

update maTable set champ11= champ1;
update maTable set champ12= champ2;
...

A ce que j'en ai compris...

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

MathieuC | Mathieu
Modérateur

Photo de MathieuC

Inscrit le : 15/07/2005

# Le 15/01/2007 à 17:26

Bah voila, c'etait pas dur en fait

tybozz | Thibaud
Membre

 

Inscrit le : 09/05/2005

# Le 15/01/2007 à 17:28

Je reformule, j'ai du mal aujourd'hui

le -10 va dépendre d'autres champs.
et influence sur le contenu, pas sur le nom du champ

par exemple, si j'ai

quelChamp|combien|champ1|champ2|champ3
avec
comme contenu
'champ1'|3|10|10|10
'champ2'|4|20|10|30

je veux me retrouver après l'update avec
'champ1'|3|07|10|10
'champ2'|4|20|06|30


Elevez un dragon !Ouvrir dans une nouvelle fenetre avant qu'il ne fasse le casting pour la star on the net academyOuvrir dans une nouvelle fenetre ou qu'il ne s'empiffre de bonbons à gogoOuvrir dans une nouvelle fenetre

devtribu | Olivier
Modérateur

Photo de devtribu

Inscrit le : 16/06/2005

# Le 15/01/2007 à 17:40

La plupart des langages actuels sont des metalangages (donc capable de générer eux memes un autre programme dans leur propre langage)
J'ai pas connaissance que SQL le soit aussi

Février 2019, mon futur livre Tout JavaScript chez Dunod https://amzn.to/2PoLd0fOuvrir dans une nouvelle fenetre

MathieuC | Mathieu
Modérateur

Photo de MathieuC

Inscrit le : 15/07/2005

# Le 15/01/2007 à 17:45

Je ne pense pas non plus que Mysql en soit capable, par contre, en faisant une procedure stockee, tu pourras surement y arriver

PHP ne fera pas une masse de requete, ce sera la procedure stockee qui le fera pour lui (mais c'est quand meme plus proche de la BDD et plus optimise a priori).

tybozz | Thibaud
Membre

 

Inscrit le : 09/05/2005

# Le 15/01/2007 à 17:54

j'ai contourné le probleme ....

update matable set
champ1 = champ1 - if(quoi = 'champ1', combien, 0),
champ2 = champ2 - if(quoi = 'champ2', combien, 0),
champ3 = champ3 - if(quoi = 'champ3', combien, 0)


Elevez un dragon !Ouvrir dans une nouvelle fenetre avant qu'il ne fasse le casting pour la star on the net academyOuvrir dans une nouvelle fenetre ou qu'il ne s'empiffre de bonbons à gogoOuvrir dans une nouvelle fenetre

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 24/11/2024 12:39:44 | Généré en 5.87ms | Contacts | Mentions légales |