je n'ai pas réussi à trouvé où mettre le "WHERE pseudo IS NULL", du coup j'ai tenté cela :
UPDATE commentaires2
SET auteur = "Ancienmembre", email = "0"
WHERE auteur = (SELECT auteur FROM commentaires2 WHERE auteur NOT IN (SELECT pseudo FROM pdf_membre))
Mais ça ne marche pas, j'ai un message d'erreur qui me dit qu'il y a plus d'une ligne en retour (ce qui est logique, mais du coup pas de traitement)
UPDATE commentaires2 C
LEFT JOIN pdf_membre M
ON C.auteur = M.pseudo
SET
C.auteur = "Ancienmembre",
C.email = "0"
WHERE M.pseudo IS NULL;
Mais avec le recul, je me rend compte que tu pourrais améliorer les choses avec plus de rigueur et de normalisation.
Tu as des membres et des commentaires. Un commentaire est posté par un membre et un membre peut poster plusieurs commentaires. C'est une relation 1,n qui implique une clé étrangère dans la table commentaire.
Ton modèle devrait être :
membre ( id_membre [pk], pseudo, mail, etc. )
commentaire ( id_commentaire [pk], id_membre [fk], texte, etc. )
La contrainte de clé étrangère dans la table commentaire te permettrait de ne pas avoir le problème que tu as aujourd'hui, avec un ON DELETE SET NULL qui ferai que lorsque l'on supprime un membre de la table membre, si il a des commentaires associés, alors MySQL mettrait NULL dans la colonne id_membre de la table commentaire peux ces enregistrements là ...
merci pour ton retour, je vais tester, mais ton commentaire m'intéresse, car en fait , le champs mail contenu dans la table commentaire est en faite le idmembre de la table membre...
j'ai donc cette fameuse clé étrangère dont tu parles, mais je t'avoue que je ne m'y suis jamais penché.
D'après ce que tu dis lorsque je fais un delete membre, il y aura la possibilité de mettre automatiquement le nom de l'auteur du commentaire en Ancienmembre, et de mettre le champs mail (soit l'idmembre) à 0 ?
Le pseudo ne sera plus dans la table commentaires. Tu n'y aura que l'id du membre, et avec une contrainte de clé étrangère ON DELETE SET NULL, si tu supprimes un membre alors il y aura NULL dans la table commentaires.
Email et pseudo ne doivent être que dans la table membre ...
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Eric (https://www.lespoetes.net)
Eric (https://www.lespoetes.net)
Eric (https://www.lespoetes.net)