Videos streaming images jeux et buzz
Connexion






Perdu le mot de passe ?

Inscrivez-vous maintenant !
Menu Principal
Communauté


(1) 2 »


Wiliwilliam
SQL: Encodage de Varchar
 1  #1
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37156
Karma: 17396
QUESTION 1 : RESOLUE
Imaginons la colonne A et la colonne B
Est-il possible de créer la colonne B en fonction de la colonne A? et que B=2xA (par exemple)
Et que si j'update une valeur de la colonne A, la colonne B se mette à jour sans requête?
(un peu comme peu le faire Excel finalement)


QUESTION 2
j'update ma question!
c'est à propos de l'encodage des infos.
j'ai mis mes varchar en UTF8
et j'ai mis mon fichier php en UTF8 sans BOM.
je comprends pas pourquoi ça afficher pas mes accents et caractères particuliers...
��������
help!

Contribution le : 11/02/2016 11:41

Edité par Wiliwilliam_ sur 23/2/2016 23:09:35
Edité par Wiliwilliam_ sur 23/2/2016 23:10:47
Signaler

Arsenick
 1  #2
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6444
Karma: 1022
@Wiliwilliam_ Nop et excel non plus au passage.
Oui Excel le fait mais parce qu'il y a une formule derrière ^^. Mais, pour en revenir au sujet, les triggers permettent d'automatiser ça de manière totalement invisible pour l'utilisateur.

Si besoin je devrais pouvoir t'aider, à condition de développé un peu le besoin 🙂.

Contribution le : 11/02/2016 14:36
Signaler

Wiliwilliam
 1  #3
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37156
Karma: 17396
des opérations à la con

une colonne A dont les valeurs varient de 1 à 99 et une autre B dont les valeurs varient de 1.00 à 2.00
il faut stocker AxB dans une troisieme colonne C, à chaque fois qu'une valeur que A ou B change (pour une ligne simplement)

mais la question du coup c'est: est ce que c'est pas moins couteux de faire ça dans une requête? ou le trigger est vraiment très léger?

NB: j'ai besoin des 3 colonnes! il me les faut dans la BDD

Contribution le : 11/02/2016 15:06
Signaler

Arsenick
 1  #4
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6444
Karma: 1022
@Wiliwilliam_
Alors 'colonne' n'existe pas, on parle de 'champ' dans une base de donnée. (oui je pinaille mais c'est plus facile pour se comprendre ensuite ^^)
Ensuite un trigger ralenti forcément car c'est une seconde requête qui s'exécute mais on parle de temps machine de quelques dixième de seconde (sauf cas exceptionnel)

La question que je me pose: Pourquoi tu as absolument besoin des 3 valeurs dans ta table?

Contribution le : 11/02/2016 15:17
Signaler

Wiliwilliam
 1  #5
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37156
Karma: 17396
parce que je récupère la première valeur via une API de manière chronique, que la seconde varie en fonction d'action sur un site (complètement aléatoire) et que je fais un affichage avec les trois valeurs.
Non mais donc en fait je me prends la tête pour rien, j'intégrerais la multiplication dans la requête API.

Merci pour les infos et les précisions de vocabulaire 😉

Contribution le : 11/02/2016 15:21
Signaler

-Flo-
 1  #6
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15182
Karma: 12550
@Wiliwilliam_ : Ne tiens pas compte de ses précisions de vocabulaire : elles sont fausses. 😃

On utilise bien le terme "colonne".

Contribution le : 11/02/2016 15:27
Signaler

Wiliwilliam
 1  #7
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37156
Karma: 17396
hahaaaaa?

😃

ipfs QmNwtNdsm2NGQNMU7HbsuHwBf5haSBoAqX2SceaWbMCSH2

en 3 round! les coups sur la famille et le physique sont interdits! 😃

Contribution le : 11/02/2016 15:30
Signaler

Arsenick
 2  #8
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6444
Karma: 1022
@Wiliwilliam_ Pas de soucis 🙂 cela peut sembler pénible mais utilisé les bon termes permettent aussi des recherches plus efficace sur le net 😉.

Cela fait partie des "best pratice" en DB: ne stocker que l'information que tu ne peux pas calculer autrement.
De même je te conseil fortement de faire des procédures stockée, comme ça tu ne modifies qu'a un seul endroit en cas de modif et accessoirement histoire d'avoir la main sur ce qui rentre et sors de la DB.

Et tu n'es pas obliger de le calculer dans l'API, fais le au moment de la requête:

SELECT (Valeur * Multiplicateur) AS Resultat
FROM MaTable


Citation :

@-Flo- a écrit:
@Wiliwilliam_ : Ne tiens pas compte de ses précisions de vocabulaire : elles sont fausses. 😃

On utilise bien le terme "colonne".


en SQL? t'as fumer quoi?
On utilise le mot champ qui est une traduction de l'anglais "Fields".

On parle de champs dans la table mais de colonne dans les résultats.

Contribution le : 11/02/2016 15:30
Signaler

Wiliwilliam
 1  #9
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37156
Karma: 17396
oui oui au moment de la requête, je me suis mal exprimé! (un autre koreusien bien inspiré m'avait conseillé de faire faire un max de boulot par la BDD :-D)

Contribution le : 11/02/2016 15:32
_________________
Signaler

Arsenick
 1  #10
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6444
Karma: 1022
@Wiliwilliam_ C'est pas forcément faux, ça dépends de quand cette info date, a une période on stockai tout en DB, y compris les images:p.
De plus en plus c'est l'esprit POO qui prend le dessus et donc chaque objet à une fonction définie. Dans cet optique la DB ne sert qu'à stocker du data.

Mais quitte a faire quelque chose de nouveau autant le faire au standard actuel 🙂.

Contribution le : 11/02/2016 15:40
Signaler

Wiliwilliam
 1  #11
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37156
Karma: 17396
c'est un jeu pour les koreusiens, je vais pas me prendre trop le chou 😃

Contribution le : 11/02/2016 15:41
_________________
Signaler

-Flo-
 1  #12
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15182
Karma: 12550
Citation :

Arsenick a écrit:
en SQL? t'as fumer quoi?
Docu Php
On utilise le mot champ qui est une traduction de l'anglais "Fields"


J'ai fumé la doc MySQL.

https://dev.mysql.com/doc/refman/5.7/en/create-table.html
https://dev.mysql.com/doc/refman/5.7/en/alter-table.html

On utilise bien le mot colonne qui est une traduction de l'anglais "column". 😃

Contribution le : 11/02/2016 15:41
Signaler

Arsenick
 1  #13
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6444
Karma: 1022
@-Flo- J'ai corriger plus haut car je pense avoir compris l'erreur.

Champs c'est quand on est dans la DB et Column c'est dans le tableau de résultat de requête ou alors c'est juste Microsoft qui utilise cette différenciation ou Oracle qui tente d'imposer un nouveau standard en mettant colonne partout 😃.

C'est quand même zarb parce que plein de cours et de site utilise le terme "champ" quand il parle de la DB (pas du résultat de requête qui lui est bien un tableau ligne/col )

Contribution le : 11/02/2016 15:50
Signaler

-Flo-
 1  #14
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15182
Karma: 12550
@Arsenick : Pas vraiment. Les colonnes servent à définir la structure d'une table. Les insertions qui sont faites dans cette table créent des lignes. Un champ est l'intersection d'une ligne et d'une colonne.

Contribution le : 11/02/2016 15:54
Signaler

Arsenick
 1  #15
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6444
Karma: 1022
@-Flo- J'ai toujours vu partout le terme champ pour définir une table et les intersection Col/Ligne c'est une cellule.
Franchement ça me perturbe.

Et désolé, je me rend compte que ma réponse était quelque peu agressive. :oops:

Contribution le : 11/02/2016 16:01
Signaler

Koreus
 1  #16
Webhamster
Inscrit: 03/07/2002 23:58
Post(s): 75183
Karma: 36887
@Wiliwilliam_

Je ne connais pas ton besoin exact, mais il n'est inutile de dupliquer une colonne si la valeur de la 2eme colonne dépend de la première.

Le mieux c'est de faire le select qui va bien

SELECT A, 2*A as B FROM matable

Contribution le : 11/02/2016 19:04
Signaler

noext
 1  #17
Je suis accro
Inscrit: 23/05/2009 12:20
Post(s): 545
Karma: 100
en sql on stock pas de valeur calculer/redondante, si tu peu trouvé B grâce a A alors tu le stock pas , tu le calcule au moment de ta requête ou post-requête

Contribution le : 11/02/2016 19:32
Signaler

Invité
 1  #18
FantômeInvité
J'comprends pas ce que tu veux faire exactement, mais si tu crées une vue b que tu mets à jours via la table a
Du style
DELMITER | CREATE VIEW `b` AS SELECT * FROM `a`;
CREATE TRIGGER `nomdutrigger` AFTER UPDATE ON `a` FOR EACH ROW UPDATE `b` SET `lesColonesDeB`=`lesColonesDeA`*2 FROM `b`,`a`; 
| 
DELIMITER ;



(J'ai pas test le code, mais ça devrait y ressembler) Du coup,à chaque update de a, la vue b sera update sans commande supplémentaire. 🙂

Contribution le : 12/02/2016 08:26
Signaler

Wiliwilliam
 1  #19
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37156
Karma: 17396
Nan mais ce que koreus a écrit correspond très bien.
Bêtement j'ai voulu trop stocker de trucs pour éviter d'avoir à effectuer des calculs en php ensuite , mais j'ai oublié que rien ne m'empêchait de faire un calcul quand je récupérerai les résultats

Contribution le : 12/02/2016 09:13
Signaler

Invité
 3  #20
FantômeInvité
[Compte supprimé]

Contribution le : 12/02/2016 10:02
Signaler


 Haut   Précédent   Suivant
(1) 2 »






Si vous êtes l'auteur d'un élément de ce site, vous pouvez si vous le souhaitez, le modifier ou le supprimer
Merci de me contacter par mail. Déclaré à la CNIL N°1031721.