cs_windu
Messages postés282Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention19 juillet 2006
-
25 nov. 2004 à 17:29
cs_windu
Messages postés282Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention19 juillet 2006
-
2 déc. 2004 à 12:05
Bonjour a tous...
Alors voila mon problème.
J'ai 3 tables : oeuvres, auteurs et creer
la table creer sert a contenir les ID des oeuvres et des auteurs correspondant (relation 1-n 1-n pour ceux qui font du MCD, MLD: ce qui signifie qu'un auteur peut avoir plusieurs oeuvres et une oeuvre peut avoir été faite par plusieurs auteurs)
Monproblème est que lorsque je veux supprimer un auteur, je dois supprimer en meme temps ces oeuvres... d'où les requêtes suivantes (J'utilise une classe pour MySQL trouvé ici: merci a son auteur elle est vraiment géniale cette classe):
// Suppression des oeuvres dont l'auteur correspond à $num
if (!$DB_CX->DbQuery("DELETE FROM oeuvres WHERE oeuvres.id_oeuvres=creer.id_oeuvres AND creer.id_auteurs='$num'"))
{
echo $DB_CX->DbLastError();
}
else
{
echo "
".$DB_CX->DbAffectedRows()." ligne supprimées parmi les oeuvres
";
}
// Suppression des auteurs dont l'ID correspond à $num
if (!$DB_CX->DbQuery("DELETE FROM auteurs WHERE auteurs.id_auteurs='$num'"))
{
echo $DB_CX->DbLastError();
}
else
{
echo "
".$DB_CX->DbAffectedRows()." ligne supprimées parmi les auteurs
";
}
// Suppression des liens auteurs/oeuvres dans creer dont l'auteur correspond à $num
if (!$DB_CX->DbQuery("DELETE FROM creer WHERE creer.id_auteurs='$num'"))
{
echo $DB_CX->DbLastError();
}
else
{
echo "
".$DB_CX->DbAffectedRows()." ligne supprimées parmi les creations
";
}
Or la 1° requete me dit que la table "creer" n'existe pas (erreur 1109), mais les 2 autre requetes font aussi appel a cette table et ne pose pas de pb!
mixo11
Messages postés20Date d'inscriptionsamedi 20 novembre 2004StatutMembreDernière intervention28 janvier 2005 26 nov. 2004 à 07:39
C'est pas très cmpliqué ton problème.
Tu utiles la table créer mais tu le dis pas a ta requete que tu l'utilises....
Dans les autres ce n'est pas le cas tu utilises que l table concernée....
Donc soit tu inclus je sais pas comment ta table créer quelque part soit tu fais un select qui te sortira tous les id_ouvre concerné par le $num de l'auteur en gros un truc dans le genre :
DELETE id_oeuvre FROM oeuvre where (SELECT id as id_oeuvre from creer where creer.id_auteurs='$num') = id_oeuvres
J'ai pas testé mais ca doit être un truc dans le genre. Le select te sort ta liste tu compares chque élement de ta liste avec id_oeuvre et tu supprimes les éléments qui sont égaux.
cs_windu
Messages postés282Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention19 juillet 2006 26 nov. 2004 à 13:27
En effet, il me semblait bien que le pb venait du fait que je ne disais pas a la requete que j'ai besoin de la table 'creer'... seulement je ne savais pas comment lui dire car un requete DELETE n'accepte aps que l'on cite plusieurs tables! Merci pour l'aide, je vérifie de suite ce que ca donne!
Que la Force soit avec toi, Jeune Padawan!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_windu
Messages postés282Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention19 juillet 2006 2 déc. 2004 à 11:57
bon ben...c a amrche pas cette requete!!!
& désolé mais je comprend pas tout au principe des sous-requete (+ exactement j'ai du mal a comprendre comment il faut l'écrire!!!)