Demande d'aide pour une requeête MySQL

Bonjour,

Je possède un forum et suite à une “erreur” de ma part, j’ai supprimé des messages principaux SANS supprimer tous les messages réponses qui y étaient liés…

Je voudrait donc maintenant “purger” ces messages mais je ne vois pas comment faire.

La table se compose globalement des champs :
id
auteur
message
date_message
derniere_reponse
reponse_a_id

Si reponse_a_id = 0, c’est le message principal, sinon c’est une réponse au message “id”.

Il me faudrait donc une requête qui supprime tous les enregistrements où reponse_a_id est égal à un id inexistant dans la table (mis à part 0 évidemment).

Merci d’avance.

Non, tous ceux dont reponse_a_id est égale à un id qui n’existe plus.

J’ai trouvé la solution :

SELECT * FROM forum as a WHERE NOT EXISTS (SELECT b.id FROM forum as b WHERE a.reponse_a_id = b.id) AND a.reponse_a_id !=0

Cependant, mon serveur n’a que mysql 4.0.* et ne gère donc pas les sous-requêtes…

Je vais le mettre à jour, c’est la seule solution…

avec une requete left join

select pp., pf. from post ps left join post pp on pf.idpp = pp.idp where pp.idp = ‘’

pp : post parent
pf : post fils

ça devrait afficher tous les post fils qui n’on pas de post parent et ça marche meme avant la 4.0

Non, cela ne fonctionne pas… cela ne retourne aucun enregistrement.

Ce que tu peux faire c’est une requête du genre :

[cpp]SELECT P.id
FROM post P
LEFT JOIN post Q
ON P.reponse_a_id = Q.id
WHERE P.reponse_a_id != 0 AND Q.id IS NULL[/cpp]

Ca te filera déjà les id des messages à supprimer.

(Ceci dit : c’est la même requête que quazardous, sauf qu’un LEFT JOIN dont à droite il n’y a rien renvoie NULL, pas ‘’)

je me suis fais eu par le is null (pas clair la gestion du null en mysql… ou c moi quisui pas clair)

la ça marche

SELECT pp. * , pf. *
FROM post pf
LEFT JOIN post pp ON pf.idpp = pp.idp
WHERE pp.idp IS NULL AND pf.idpp <> 0

le pf.idpp <> 0 c pour discriminer les post toplevel (pas de parent mais c normal)

Ben

NULL = NULL = faux
NULL IS NULL = vrai

PAs plus compliqué ^^