8791 sujets

Développement web côté serveur, CMS

Bonjour,

Je suis de nouveau face à un problème, mais je ne suis pas très fort en sql.
explication:
j'ai 3 tables: articles, articles_tags, tags
Donc mes articles ont chacun un ou plusieurs tag(s) les deux reliés par "articles_tags" qui contient donc les IDs de chacun dans deux champs (articles_id => tags_id)

Le problème est du côté backoffice. Mon article a donc les différents tags que l'on peut cocher ou décocher.
J'aimerais que lors des mise à jour, ma requête vérifie si les tags choisis correspondent déjà dans la table "articles_tags", et si ce n'est pas le cas pour tous que la requête mettent à jour ou insère les nouvelles...
Je suis complètement perdu. J'ai essayé ON DUPLICATE KEY mais c'est pas ça...
Bref si quelqu'un peut m'aider, merci par avance!
Smiley cligne
Modérateur
Bonjour,

Deux pistes : "not in" et "if not exists"

Lors d'une mise à jour, tu peux faire une première requête qui va supprimer les tags qui ne sont plus cochées.

DELETE FROM articles_tags
WHERE articles_id = 123
AND tags_id not in (4,5,6,7,8)


Ensuite, informes-toi sur "if not exists" en SQL. Cela permet, entre autre, de vérifier si un enregistrement existe avant de faire un INSERT.
Modifié par Tony Monast (18 Apr 2012 - 01:17)