Requete permetant de trouvé les guid fantome.

Fermé
Pryou - 5 sept. 2011 à 23:28
 Pryou - 8 sept. 2011 à 18:39
Bonjour,
J'ai 2 table, la table "comptes" et la tables "personnages"

Dans la table comptes, il y a un champ id (ID : 1,3,100..etc)
Dans la table personnages, il y a donc un champ id pour définir a quel membre appartient le personnages.
(Si l'id du membre est 455, tout les personnages ayant l'id 455 lui appartienne donc)

J'ai donc fait un grand nettoyage des membres inactifs depuis longtemps. le problème c'est que certe les compte sont supprimé mais il reste donc des personnages fantôme.
J'aimerais donc savoir si il existait une requête ou autre qui une fois lancé, liste tout les id des personnages qui ne corresponde a aucun id dans les comptes.

Pour ensuite les supprimé 1 a 1 a la main si il n'y pa pas de requête pour que tout les ID donné soit supprimé.

Merci d'avance ! =D

1 réponse

supernico Messages postés 513 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 20 novembre 2011 193
5 sept. 2011 à 23:56
Pour sélectionner les lignes :

SELECT FROM personnages LEFT JOIN comptes ON personnages.compte_id=comptes.id WHERE comptes.id IS NULL

Pour supprimer ces lignes (après avoir vérifié que la requête précédente sélectionne bien les personnages fantômes) :

1) récupère la liste des personnages :
SELECT GROUP_CONCAT(personnages.id SEPARATOR ',') FROM personnages LEFT JOIN comptes ON personnages.compte_id=comptes.id WHERE comptes.id IS NULL

2) supprime :
DELETE FROM personnages WHERE id IN (liste récupérée en 1)

Bien sûr sauvegarde ta base de données avant de jouer avec DELETE ;)
0
supernico Messages postés 513 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 20 novembre 2011 193
8 sept. 2011 à 07:51
tu a réussi alors ?
0
Je vais tester sa et je te dit ce soir :)
0