Requete php/mysql avec CONCAT()

Fermé
oloufemi Messages postés 20 Date d'inscription dimanche 22 octobre 2006 Statut Membre Dernière intervention 30 juin 2011 - 7 mars 2011 à 20:59
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 - 10 mars 2011 à 10:04
Bonjour,

Bonjour, j'aimerais faire la concatenation d'un champ si la valeur n'existe pas au prealabre dans ce champ. Je m'explique:

- voici la requete
"INSERT IGNORE INTO products_".$bd." (product_code, id_box, id_mbox) VALUES ('$product_code','$id_box','$id_mbox')
ON DUPLICATE KEY UPDATE CONCAT(id_box , ',$id_box') "


La clé primaire est product_code.

- Ce que je veux faire c'est d'effectuer la concatenation si et seulement la valeur dans $id_box n'existe pas encore dans le champ 'id_box'

Normalement ce que je faisais c'est
1- un select pour choisir la valeur du champ 'id_box'
2- un eregi($id_box, $sql_result["id_box"]) pour tester l'existence de $id_box dans le champ 'id_box'
3- enfin un update CONCAT si la valeur n'existe pas


Mais le probleme est que la table contient deja 2 millions d'entrées et les select prennent du temps, surtout que je rentre en moyenne 600 nouvelles valeurs



Si vous avez une idée, merci d'avance.


O[_FAK
A voir également:

2 réponses

moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
9 mars 2011 à 08:48
Salut,
Pourquoi tu ne traite pas ça dans un switch case(); ?
Ou encore un if tout simplement.
A 2 millions il fut indexer... quel SGBD ?

Attention concat ne fonctionne pas pareil sous toutes les techno. CErtains ne concatène que 2 valeurs / fonction
0
oloufemi Messages postés 20 Date d'inscription dimanche 22 octobre 2006 Statut Membre Dernière intervention 30 juin 2011
9 mars 2011 à 15:24
Salut,
Je ne fais pas de switch case parce qu'en faisant un insert ignore... on duplicate, il m'est impossible de connaitre au préalable la valeur de id_box qui se trouvait dans la base de donnée.
S'il existe une syntaxe du genre: insert ignore... on duplicate update <if ... else ...>
ce serait l'idéal pour moi, mais j'ai beau cherché je ne trouve rien de pareil.
Merci pour ta réponse.
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
10 mars 2011 à 10:04
Hello
Je ne connais pas l'usage de insert ignore... on duplicate update <if ... else ...>
dsl
0