Requete php/mysql avec CONCAT()

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

2 réponses

  1. 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
    1. 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
  2. Hello
    Je ne connais pas l'usage de insert ignore... on duplicate update <if ... else ...>
    dsl
    0