Trouver clé secondaire qui n'ont pas de clé primaire
Bonsoir. Je développe un JDR en PHP, dans le but de m'entrainer au PHP mais je suis confronté à un problème. Par soucis de temps, il m'arrive de supprimer des entrées directement via PHPMyAdmin. Le seul problème, c'est que si je supprime le joueur n°24 par exemple, les entrées dans la table inventaire, ainsi que dans beaucoup d'autres tables seront toujours présentes.
Je me demandais donc, si il y avait une fonction permettant de trouver toutes les entrées d'une table, qui ont une valeur qui n'est pas pas dans une autre table.
Par exemple dans la table joueur :
1
2
3
Et dans la table inventaire :
1
3
4
5
Je voudrais qu'il me retourne, l'entrée qui a la valeur 4 et celle qui a la valeur 5 de la table inventaire, mais pas celle qui à la valeur 2 de la table joueur (un joueur peut ne pas avoir d'objet dans l'inventaire, auquel cas il n'a aucune entrée).
Est ce possible ? J'avais déjà tenté quelque chose comme ceci :
DELETE FROM inventaire, joueur WHERE id_joueur` != 'joueur'.`id_joueur`
Mais ça ne marche pas (et heureusement, car cela m'aurait supprimé des entrées dans les deux tables).
J'ai peut-etre une idée, avec un for each, en prenant le n° de joueur de la table inventaire un par un, et en cherchant si il y a une correspondance dans la table joueur, et ça pour tous les numéros, mais cela va faire un script très long à charger.
Si vous avez une autre idée, je suis preneur.
Merci d'avance.
syntaxe de suppression multiple
Bonsoir,
Ta requete ne marche pas car la syntaxe de suppression multiple est spécifique chez MySQL http://dev.mysql.com/doc/refman/5.1/en/delete.html
attention à la version !!!
Pour ton problème à l'origine il faut changer de moteur, passer de MyIsam à InnoDB et ajouter des contraintes de clés étrangères pour déclencher automatiquement les suppresssions des lignes concernées.
cf. : http://dev.mysql.com/doc/refman/5.1/...nstraints.html
Xavier