Problème de requete SQL!!!

Résolu
cs_windu Messages postés 282 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 19 juillet 2006 - 25 nov. 2004 à 17:29
cs_windu Messages postés 282 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 19 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!

Si une ame charitable daigne passer...

5 réponses

cs_windu Messages postés 282 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 19 juillet 2006
2 déc. 2004 à 12:05
Ca y est!!!
suffisait ke je dise ke g comprend rien pour finalement trouver!!!
donc voici ma requete DELETE (des fois que ca en intéresse d'autres?):
"DELETE FROM oeuvres USING oeuvres, creer WHERE oeuvres.id_oeuvres=creer.id_oeuvres AND creer.id_auteurs='$num'"

il suffisait d'avoir recours a USING pour nommer plusieurs tables
Merci a tous pour votre aide
Que la Force soit avec toi, Jeune Padawan!!!
3
mixo11 Messages postés 20 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 28 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.

--
"Marco mal se pasejo"
0
mixo11 Messages postés 20 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 28 janvier 2005
26 nov. 2004 à 07:40
J'ai fait une erreur :

DELETE id_oeuvre FROM oeuvre where (SELECT id as id_oeuvre from creer where creer.id_auteurs='$num') = $num;

au mloins je te corrige le $num après j'ai pas testé.
bonne chance.

--
"Marco mal se pasejo"
0
cs_windu Messages postés 282 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 19 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!!!
0

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

Posez votre question
cs_windu Messages postés 282 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 19 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!!!)

Que la Force soit avec toi, Jeune Padawan!!!
0
Rejoignez-nous