|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
Bonjour,
Je suis assez débutante dans SQL et je suis actuellement en train de modifier une base de données, et évidemment, certains mots ne sont pas toujours écrits de la même facon. Donc j'ai importé mon fichier excel sous sql developper, je compte travailler dessus et ensuite le réexporter sous excel. Je voulais modifier des choses dans ma colonne VILLE, mais je remarque que ca n'est pas pris en compte. Code :
Est ce que c'est mon code qui est le mauvais? Merci d'avance de votre aide! |
||
|
|
00
|
|
|
#2 |
![]() ![]() |
Bonjour,
Je pense que c'est un UPDATE que tu dois faire en non un SELECT. Code :
UPDATE liste_clients SET VILLE = REPLACE(VILLE,'St-Hyacinthe ','Ste-Hyacinthe'); la doc : Code :
UPDATE [nom_de_la_table] SET [nom_du_champ] = REPLACE([nom_du_champ],'[chaine_a_remplacer]','[chaine_de_remplacement]');
__________________
modérateur webmasters - développements web & php faq jQuery - règles du forum - faqs web mon espace persoVenez participez au deuxième defi Web !
|
|
00
|
|
|
#3 |
![]() ![]() |
Pour éviter la mésaventure qui te donne du travail, il faut externaliser les villes dans une table de référence. Ainsi, la liste_clients ne contiendra qu'une clé étrangère faisant référence à l'identifiant de la ville et la ville sera toujours présentée avec la même orthographe.
En l'occurrence, cette ville devrait être orthographiée 'Sainte-Hyacinthe' ! Et en principe on ne nomme pas les tables au pluriel ! Cette structure de tables serait préférable : Ville (vil_id, vil_nom...) Client (clt_id, clt_nom, clt_adresse, clt_code_postal, clt_id_ville...)
__________________
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
|
|
|
#4 |
|
Futur Membre du Club
![]() |
Juste pour appuyer cette idée de Cynefil permettant de faciliter la maintenance et mieux encore d'optimiser la gestion de l'entité client.
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
Je suis tout à fait d'accord avec vous deux sur le fait que la base de données n'est pas vraiment conceptualisée. Pour dire vrai, quand je l'ai eu elle était formatée excel et c'était plusieurs fichiers excel...
Par contre, j'ai quand même essayé la requete avec le UPDATE, et je ne comprends toujours pas: cela ne modifie pas mes données comme voulu |
|
|
00
|
|
|
#6 | ||||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
Il y a plus simple comme requête de mise a jour : Code SQL :
Cela dit, la requete de Golgotha devrait fonctionner quand meme... peux-tu donner un exemple de ce que tu as comme données ? C'est aussi peut-être un problème de Collation, si celle de ta colonne est sensible à la casse, alors 'St-Hyacinthe' est différent de 'st-Hyacinthe' ! tu peux contourner le problème en spécifiant une collation insensible à la casse : Code SQL :
|
||||
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
Merci beaucoup!! Finalement c'est la requete
Code SQL :
qui a marché. Aucune idée pourquoi l'autre non... Vous êtes des anges, merci!! |
||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
Héhé bonjour encore à tous,
Ca doit vous arriver souvent quand vous découvrez une nouvelle base de données de découvrir encore plus chaque jour les erreurs qu'il y a dedans... Je me demande une chose, j'ai remarqué que lorsque j'ai importé les données sous sql developper (qui est en anglais chez moi), que les "é" sont devenus des "¿"...j'imagine que c'était mal codé dès le départ dans excel? Est ce qu'il y aurait une commande pour changer cela dans toutes les tables (je compte remplacer par un "e" simple, on ne sait jamais pour l'avenir), ou est ce que je dois faire manuellement chacune des tables? Aussi une dernière question, est ce qu'il est possible comme dans excel de créer dans sql developper une nouvelle colonne à partir d'une autre? Du genre "si dans l'autre table il est écrit "niania", alors 1; si "niania2" alors 3...ect? Merci d'avance |
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
Pour ton problème d'encodage, c'est un peu plus comliqué que ça... il n'y a sûrement pas que les é qui ont été remplacés, mais sûrement aussi les "à", le "è", les "ç", j'en passe... quel est l'encodage d'origine ? Pour l'ajout de la colonne tu peux faire ceci : Code SQL :
Mais... pourquoi veux-tu faire cela ? |
||
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
L'encodage d'origine? Je peux le savoir quelque part en particulier? En fait comme le fichier est un fichier excel à la base, je pense que les choses ont été entrées manuellement.
A priori je viens de regarder, et le problème se retrouve seulement pour les "é" et les "è". Le reste étant à priori des chiffres Merci pour l'ajout de colonne, ca va sûrement bien m'aider! Sinon pourquoi je fais ca? En fait, je dois réaliser des études statistiques sur ce fichier, mais je dois le nettoyer avant. Le truc, c'est que j'aurais pu le nettoyer manuellement sous Excel parce qu'il y a assez peu de lignes (moins de 300), mais étant donné que je débute en parallèle sur SQL, je me suis dit que ca serait bien d'apprendre ce genre de choses pour l'avenir |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Si tu es amenée à utiliser beaucoup cette colonne, tu peux la rendre persistente (en ajoutant "PERSISTED" à la fin du code que j'ai posté
sans ça, le calcul est effectué au moment des requêtes en la rendant persistante, la colonne est "en dure", et est mise à jour automatiquement (lors d'insertion ou de mise à jour des colonnes sur lesquelles reposent le calcul). Les données sont alors directement disponible (déjà calculées) au moment des requetes. Tu peux en plus l'indexer si tu veux optimiser les requetes. |
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
Ah super! Oui c'est en effet très probable que je la réutilise, car je compte recoder une variable nominale en l'occurence en une catégorielle (histoire de rendre mes analyses stats un peu plus simples)
Donc si je la rend PERSISTED, une fois que j'aurais tout fini mon nettoyage sous SQL, lorsque je ré-extraierais (oula!!) mon fichier sous formal excel disons, cela sera comme une colonne supplémentaire c'est ca? Ah vraiment super merci, je me sens vraiment moins seule |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
c'est dans tous les cas une colonne supplémentaire
Dans un cas (non persistante) sa valeur est calculée au moment ou elle entre en jeu (dans le select, ou dans le where...) dans l'autre cas (persistante), sa valeur est calculée au moment de l'insertion et enregistrée avec les autres données de la table. elle est mise à jour le cas échéant si une des valeurs qui entrent en jeu dans son calcul est modifiée. Mais au moment de l’exécution d'une requête qui fait appel à cette colonne, la valeur est déjà calculée. |
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
Ok merci, c'est noté.
Sinon pour l'encodage des "é" je dois donc le faire chacun manuellement dans chaque colonne, je ne peux pas faire tout d'un coup partout? |
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
hmmm
As-tu plusieurs colonnes dans une table, ou plusieurs tables concernées ? pour une table donnée, tu peux faire toutes les colonnes concernées en une seule requête, mais il faudra quand même spécifier chaque colonne dans la requete... |
|
|
00
|
|
|
#16 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
Non c'est dans la même table
|
|
|
00
|
|
|
#17 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Si le nombre de colonnes concernées est raisonnable, autant le faire à la main :
Code SQL :
Il sera peut être utile de copier/coller le caractère incorrect (avec une requête SELECT,...) pour être sur que c'est le bon caractère |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com