Requete php/mysql avec CONCAT()

oloufemi Messages postés 22 Statut Membre -  
moderno31 Messages postés 900 Statut Membre -
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 900 Statut Membre 92
 
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 22 Statut Membre
 
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 900 Statut Membre 92
 
Hello
Je ne connais pas l'usage de insert ignore... on duplicate update <if ... else ...>
dsl
0