Besoin d'aide pour requête SQL

Besoin d'aide pour requête SQL - SQL/NoSQL - Programmation

Marsh Posté le 31-07-2007 à 14:56:46    

Bonjour,
 
J'ai une catégorie de produits en vente où la marque figure dans l'annonce.  Le fabricant préfererai que je ne notifie pas la marque, dès lors je veux modifie celle-ci.
 
Comme il y à 200 produits, je me vois mal modifier à la main.  Il faudrait donc sans doute passer par phpmyadmin et faire une sorte de requête:
 
Modifie "MARQUE" par "AUTRE MARQUE" dans toutes les descrptions de produits où tu trouves "MARQUE" dans le champ description.
 
 
Ca done quoi en "bon" sql? :d

Reply

Marsh Posté le 31-07-2007 à 14:56:46   

Reply

Marsh Posté le 31-07-2007 à 15:09:08    

ca donnerais  
UPDATE nom_table SET description="AUTRE MARQUE" WHERE description="MARQUE"  
 
à vérifier, je n'ai que très peu de connaisance en sql

Reply

Marsh Posté le 31-07-2007 à 15:10:47    

non ce n'est pas juste :/
 
Le champ description ne comprend pas 'juste' la marque, mais comprend du blabla et dans ce blabla figure la marque.
 

Reply

Marsh Posté le 31-07-2007 à 15:37:40    

tu veut remplacer  "******MARQUE******"  
                   par  "******AUTRE MARQUE******"?
Si oui, il e faudrait créer une fonction qui te fasse ca ...
Si non,
UPDATE nom_table SET description="AUTRE MARQUE" WHERE description LIKE "%MARQUE%"
toujours à vérifier :)


Message édité par Akash31 le 31-07-2007 à 15:37:52
Reply

Marsh Posté le 01-08-2007 à 15:13:18    

Cela ressemble à ton hypothèse 1.
 
 
Donc en gros il faut cette fonction:
 
 
Parcours toutes les descriptions des produits, et lorsque tu rencontres quelque part dans une description, la marque "1", remplace la par la marque "2".
 
Et ainsi de suite pour tous les produits.
 
Qui se dévouent pour me pondre ça en sql? :d

Reply

Marsh Posté le 01-08-2007 à 15:18:47    

Replace est une fonction a peu près standard, il est plus que probable qu'elle existe sur le SGBD que tu utilises...
 
Quelqu'un se devoue pour lire la doc de son SGBD? :o

Reply

Marsh Posté le 01-08-2007 à 17:08:58    

en mysql siouplé :o

Reply

Marsh Posté le 01-08-2007 à 17:20:10    

replace existe bien en mysql.

Reply

Marsh Posté le 01-08-2007 à 17:54:42    

Reply

Marsh Posté le 01-08-2007 à 18:52:32    

Je veux juste qu'on m'aide, pas apprendre le langage, c'est pas mon métier :/

Reply

Marsh Posté le 01-08-2007 à 18:52:32   

Reply

Marsh Posté le 02-08-2007 à 09:07:57    

aide toi, et le forum t'aidera ...
 
en l'occurence fais au moins l'effort de lire le lien que je t'ai donné au dessus, toute l'utilisation de la fonction replace y est expliqué...

Reply

Marsh Posté le 02-08-2007 à 13:11:19    

J'ai lu. La fonction replace est notifiée oui... Mais tout ce qu'il y à autour non.
 
Comment donc spécifier à cette fonction Où aller remplacer, par exemple.
 
Et en l'occurence, cette fonction est elle utilisable dans phpmyadmin?

Reply

Marsh Posté le 02-08-2007 à 13:47:49    

Citation :

REPLACE(str,from_str,to_str)
 
Retourne une chaîne de caractères str dont toutes les occurrences de la chaîne from_str sont remplacées par la chaîne to_str :
 
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
        -> 'WwWwWw.mysql.com'
 
Cette fonction gère les caractères multi-octets.


Qu'est ce qu'il te manque exactement?
Comment as-tu essayé de l'utiliser?
Montre nous donc ta requête!

Reply

Marsh Posté le 02-08-2007 à 14:18:37    

Cela ne fonctionne pas sachant qu'à priori il ne sait pas où aller remplacer et que de plus je ne veux pas remplacer une partie d'un mot mais un mot en entier.
 
Voici ce que j'ai tapé dans le SQL:
requête SQL:  
SELECT REPLACE (
'TUNINGBOX',
'TUNINGBOX',
'POWERBOX'
)  
 
et voici le résultat:
Affichage des enregistrements 0 - 0 (1 total, traitement: 0.0002 sec.)

Reply

Marsh Posté le 02-08-2007 à 14:24:56    

ça fonctionne très bien et ta requete remonte exactement ce qu'il faut ( a savoir POWERBOX).

Reply

Marsh Posté le 02-08-2007 à 15:00:44    

non cela ne fonctionne pas vu que cela n'a rien remplacé du tout.
 
 
Je veux donc dans toutes mes descriptions  de produit, remplacer TUNINGBOX, par POWERBOX.

Reply

Marsh Posté le 02-08-2007 à 15:39:17    

Bennyb666 a écrit :

Cela ne fonctionne pas sachant qu'à priori il ne sait pas où aller remplacer et que de plus je ne veux pas remplacer une partie d'un mot mais un mot en entier.
 
Voici ce que j'ai tapé dans le SQL:
requête SQL:  
SELECT REPLACE (
'TUNINGBOX',
'TUNINGBOX',
'POWERBOX'
)  
 
et voici le résultat:
Affichage des enregistrements 0 - 0 (1 total, traitement: 0.0002 sec.)


 

Code :
  1. select replace(tonChamp, 'tuningbox', 'powerbox') from taTable


 
Mais ce n'est que de l'affichage hein, les données ne sont pas modifiées


Message édité par pikti le 02-08-2007 à 15:41:25
Reply

Marsh Posté le 02-08-2007 à 15:40:21    

UPDATE nom_table SET description=REPLACE(description, 'TUNINGBOX', 'POWERBOX') WHERE description LIKE "%TUNINGBOX%"  
 
ça le fait pas?
 
edit : pikti m'a devancé :/

Message cité 1 fois
Message édité par rufo le 02-08-2007 à 15:40:59
Reply

Marsh Posté le 02-08-2007 à 15:42:21    

rufo a écrit :

UPDATE nom_table SET description=REPLACE(description, 'TUNINGBOX', 'POWERBOX') WHERE description LIKE "%TUNINGBOX%"  
 
ça le fait pas?
 
edit : pikti m'a devancé :/


 
oui, mais toi t'as pas oublié de mettre un where :p, j'ai donc édité

Reply

Marsh Posté le 02-08-2007 à 16:12:12    

donc la requête de rufo est bonne? Je peux l'utiliser en mettant juste mon nom de table?

Reply

Marsh Posté le 02-08-2007 à 16:30:11    

Bennyb666 a écrit :

donc la requête de rufo est bonne? Je peux l'utiliser en mettant juste mon nom de table?


 
ben j'ai pas testé, mais toi, testes, tu verras bien si ça fait ce que tu veux ;)

Reply

Marsh Posté le 02-08-2007 à 18:40:09    

pikti a écrit :


oui, mais toi t'as pas oublié de mettre un where :p, j'ai donc édité


le where sert à rien :o
si y'a pas le mot ça va pas le remplacer ...  
Et la vous me dites oui mais c'est pour optimiser la requête en limitant le nombre de résultats traités.
ça va dépendre des indexs mais le like '%...%', 90% de chance qu'il pourrave les perfs :o

Reply

Marsh Posté le 03-08-2007 à 12:20:07    

Ok, voici la requête correcte.  Merci à tous :)
 
 
UPDATE products_description2 SET products_description=REPLACE(products_description, 'TUNINGBOX', 'POWERBOX') WHERE products_description LIKE "%TUNINGBOX%"

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed