IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

SQL suppression enregistrement d'une jointure [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Par défaut SQL suppression enregistrement d'une jointure
    bonjours a tous le titre n'est pas clair

    dans deux tables j'ai des enregistrement qui sont liées.

    lorsque je supprime un enregistrement d'une des tables je souhaiterai que l'enregistrement de la seconde table se supprime.

    J'ai essayé cela mais sa passe pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    $sql= "DELETE DISTINCTROW
       annonces.region,
       annonces.titreannonce,
       annonces.typeannonce,
       annonces.descriptionannonce,
       annonces.numannonce,
       annonces.prix,
       annonces.date,
       images.miniature,
       images.id_img,
       utilisateurs.numutilisateurs,
       utilisateurs.mailutilisateurs,
       utilisateurs.telephone
    FROM annonces
    LEFT JOIN images ON images.numannonce = annonces.numannonce
    LEFT JOIN utilisateurs ON utilisateurs.numutilisateurs=annonces.numutilisateurs
    WHERE annonces.numannonce = '$numeroannonce'  AND annonces.numutilisateurs = '$NUMUTILISATEURS'";
    Pouvez vous m'aidez merci d'avance

  2. #2
    Membre éprouvé Avatar de lou-03
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 156
    Par défaut
    Il faut que tu spécifies dans ta première table "ON DELETE CASCADE".
    Cela veut dire qu'à la suppression d'un enregistrement, il supprimera tout les enregistrements qui lui sont liés.

    Comme ta table est déjà créée, il faut que tu fasses un ALTER TABLE .. pour ajouter cette contrainte.

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Il me semble avoir lu (par ci par là) que DISTINCTROW et la nominations des champs serait plus pour une compatibilité avec Access.

    Comme il s'agit de MySQL, il y aurait toute une partie inutile.
    Ceci devrait suffire :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sql= "DELETE annonces, images, utilisateurs
    FROM annonces
    LEFT JOIN images ON images.numannonce = annonces.numannonce
    LEFT JOIN utilisateurs ON utilisateurs.numutilisateurs = annonces.numutilisateurs
    WHERE annonces.numannonce = '$numeroannonce'  AND annonces.numutilisateurs = '$NUMUTILISATEURS'";
    Les tables concernées (pour la suppression) sont celles qui sont entre le DELETE et le FROM, donc : annonces, images, utilisateurs
    Il faut cependant que les conditions de la clause WHERE répondre à VRAI.

    Du coup, y a t-il des lignes correspondant au $NUMUTILISATEURS et $numeroannonce ?

    Ceci dit, j'aurais plus vu la requête comme ceci :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DELETE utilisateurs, annonces, images
    FROM utilisateurs
    JOIN annonces ON annonces.numutilisateurs = utilisateurs.numutilisateurs
    JOIN images ON images.numannonce = annonces.numannonce
    WHERE utilisateurs.numutilisateurs = '$NUMUTILISATEURS'
    AND annonces.numannonce = '$numeroannonce'

    Citation Envoyé par lou-03
    Il faut que tu spécifies dans ta première table "ON DELETE CASCADE".
    Faut voir quel est le moteur de MySQL qu'il s'agit.

    Si c'est MyISAM, ça ne sera pas possible.
    Si c'est InnoDB, ça sera possible, mais il faudra quand même rajouter toutes les relations entre les tables (foreign key et compagnie).

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Par défaut
    je viens d'essayer cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql= "DELETE annonces, images
    FROM annonces
    LEFT JOIN images ON images.numannonce = annonces.numannonce
    LEFT JOIN utilisateurs ON utilisateurs.numutilisateurs = annonces.numutilisateurs
    WHERE annonces.numannonce = '$numeroannonce'  AND annonces.numutilisateurs = '$NUMUTILISATEURS'";
    J'ai supprimer utilisateurs car sinon il aurai supprimé également l'utilisateur non ?

    Et effectivement cela marche niquel l'annonce et la photo se supprime bien merci pour tout

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Par défaut
    Citation Envoyé par spidercrash Voir le message
    je viens d'essayer cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql= "DELETE annonces, images
    FROM annonces
    LEFT JOIN images ON images.numannonce = annonces.numannonce
    LEFT JOIN utilisateurs ON utilisateurs.numutilisateurs = annonces.numutilisateurs
    WHERE annonces.numannonce = '$numeroannonce'  AND annonces.numutilisateurs = '$NUMUTILISATEURS'";
    J'ai supprimer utilisateurs car sinon il aurai supprimé également l'utilisateur non ?

    Et effectivement cela marche niquel l'annonce et la photo se supprime bien merci pour tout
    Ouioui il y a des ligne qui correspond au mailutilisateurs pour ma session et numannon pour recuperation du get lors de la pression sur le bouton supp

  6. #6
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par RunCodePhp
    Les tables concernées (pour la suppression) sont celles qui sont entre le DELETE et le FROM, donc : annonces, images, utilisateurs
    Il faut cependant que les conditions de la clause WHERE répondre à VRAI.
    Si tu ne veux pas de suppression dans la table "utilisateurs", alors faut pas le mettre (entre le delete et le from), donc c'est bon maintenant.


    Ouioui il y a des ligne qui correspond au mailutilisateurs pour ma session et numannon pour recuperation du get lors de la pression sur le bouton supp
    Et alors ?
    Il y a suppression ou pas ?
    Une erreur est générée ou pas ?
    C'est Ok ou pas ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Par défaut
    Non pas de problème cela fonctionne a merveille je t'en remercie
    je ne voit pas ou mettre résolu

  8. #8
    Membre éprouvé Avatar de lou-03
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 156
    Par défaut
    En bas à droite de cette page

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. suppression enregistrements d'une table
    Par Madjid52 dans le forum Bases de données
    Réponses: 12
    Dernier message: 02/09/2009, 23h51
  2. [SQL]Recopier enregistrements d'une table
    Par le_niak dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 05/04/2007, 11h21
  3. Suppression enregistrement dans une table
    Par elkhy dans le forum Access
    Réponses: 3
    Dernier message: 25/04/2006, 14h29
  4. limiter le nombre d'enregistrements d'une jointure
    Par dubem1 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/12/2005, 08h29
  5. limitation du nombre d'enregistrement sur une jointure
    Par coredump dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/06/2005, 16h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo