Supprimer un enregistrement d'une table jointe avec d'autres tables

Résolu
faksouha Messages postés 63 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 4 mai 2011 - 20 mai 2007 à 20:12
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 21 mai 2007 à 16:03
salut;

je veux supprimer un anregistrement de la table "acteur" vérifiant une condition de ACTcod qui est le id de la table "acteur". le problème c'est j'ai une autre table "jouer" qui a une clé primaire composée de (actcod,actfilm) et j'arrive pas à trouver la bonne requete pour ça.

j'ai utilisé cette requete : delete from acteur where actcod IN(select actcod from jouer where actcod=numéro_à_supprimer);

cela ne génère pas une erreur mais elle ne supprime pas.

de l'aide!!!!!!!!!!!

8 réponses

chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
20 mai 2007 à 21:46
Bonsoir,
t' as le choix entre deux solution alors:
1° solution
  Supprimer dans la même foulée,en deux requête successives et dans l' ordre :
  - tous les enregistrements de la table Jouer dont le actcod=actcod=numéro_à_supprimer
  -tous les enregistrements de la table Acteurdont le actcod=actcod=numéro_à_supprimer


2° solution
Dans la propriété de la relation , cocher l' option "Supprimer en cascade"
Tu peux alors ne supprimer que  les enregistrements de la table Acteurdont dont
 le actcod=actcod=numéro_à_supprimer.Pour la table Jouer la suppression sera automùatique.
<hr />
© -Cannes, c' est juste une histoire d' escalier.
Mais moi ce qui m' inquiète, c' est plus la montée des eaux
que la montée des marches ! .    Rolling : l' agité du bocal.
3
cs_corsica Messages postés 147 Date d'inscription lundi 13 mai 2002 Statut Membre Dernière intervention 15 février 2010
20 mai 2007 à 23:00
+1 pour la solution de chaibat05.
Le Delete ne se fait pas car tu as une clé primaire dans "jouer" composée d'une clé étrangére ( actcod ) , tu ne peux donc supprimer les enregistrements de la table acteur que si les "fils" de l'acteur sont deletés aussi ...

<hr />
Life is Too Short ...
Enjoy Your Life ...
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
20 mai 2007 à 23:43
Salut,
non cher ami , non...!
En résumé:
J' ai un acteur et j' ai une série de films de ce même acteur.
Cet acteur peut avoir joué dans plusieurs films ou aucun.
Si cet acteur a joué dans 10 films et que je veux les supprimer tous,
rien ne m' interdirait de le faire.Il se retrouve alors au même titre
qu' un acteur n' ayant joué dans aucun film de ma collection.
Libre à moi par la suite de le supprimer ou pas de ma table Acteur.
Mais le contraire est interdit par la contrainte de la relation.
C' est à dire que je ne pourrais supprimer un acteur si tous les
enregistrements de la table jouer sont supprimés au préalable.

d' ou
1° solution
  Supprimer dans la même foulée,en deux requêtes successives et dans l' ordre :
  - tous les enregistrements de la table Jouer dont le ctcod= actcod=numéro_à_supprimer
  -tous les enregistrements de la table Acteur dont le tcod =actcod=numéro_à_supprimer
Dixit.
A ce point j' ai pas été clair ?

<hr />
© -Cannes, c' est juste une histoire d' escalier.
Mais moi ce qui m' inquiète, c' est plus la montée des eaux
que la montée des marches ! .    Rolling : l' agité du bocal.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
20 mai 2007 à 23:49
oups! pardon corsica pour cette malheureuse interprétation
de ton observation..
mes excuses .

<hr />
© -Cannes, c' est juste une histoire d' escalier.
Mais moi ce qui m' inquiète, c' est plus la montée des eaux
que la montée des marches ! .    Rolling : l' ag
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
21 mai 2007 à 08:50
Salut,

tu es bien d'accord que si ca ne genere pas d'erreur, c'est qu'il ne trouve pas d'enregistrement liés à ta requete. Donc je te conseille d'en vérifier tous les paramètres.

"delete from acteur where actcod IN(select actcod from jouer where actcod= numéro_à_supprimer);"

Est ce que "select actcod from jouer where actcod=numéro_à_supprimer" te renvoie bien a des enregistrements. C'est si c'est vide, il est normal que ca ne supprime rien.

Qu'est ce que " numéro_à_supprimer " ? Si c'est une variable, ta requete est fausse, car il vaut chercher un enregistrement ou le champ actcod = numéro_à_supprimer et pas la valeur de la variable.

A+
0
faksouha Messages postés 63 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 4 mai 2011
21 mai 2007 à 12:00
bonjour;


merci à tous pour votre aide, en faite j'ai resolue le problème, j'ai du supprimer les enregistrement que je veux de la table jouer puis j'ai fais la suppression pour la table acteur.


mais ce qui m'inquiète maintenant : et si j'ai une grande BD et la table acteur est liée à plusieurs autre tables, est ce que je dois faire la suppresion de toutes mes autres tables puis retourner à la table acteur pour affectuer la suppression voulu???? il me parrait que c'est trooooooooops. ya pas peut etre possibilité de mettre le tous dans une seule requete?

merci encore
0
faksouha Messages postés 63 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 4 mai 2011
21 mai 2007 à 12:28
"numéro_à_supprimer" normalement c'est une variable, mais la j'ai fais le teste sur une valeur fixe, et il y'a des enregistrements correspondant à ce numéro mais ça donne rien.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
21 mai 2007 à 16:03
Salut,
Pourquoi vouloir supprimer un acteur de ta table Acteurs ?
Normalement ça doit rester . Peut être que tu e aura besoin
par la suite pour lui associer un film.
Mais si vraiment tu veux t' en debarasser et de tout son historique,
coches l' option "Supprimer en cascade" dans les propriété de la relations
et ceci  pour toutes les tables auxquelles il est lié quelqu' en soit le nombre.
Un Delete sur la table Acteurs suffira pour tout balayer.




 
0