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] Vérifier qu'un enregistrement n'est pas dans une autre table avant suppression


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut [SQL] Vérifier qu'un enregistrement n'est pas dans une autre table avant suppression
    je dois faire en php une vérification pour obtenir qu'avant de supprimer un enregistrement celui-ci ne se trouve pas dans une autre table please !!!

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Vous ne pouvez pas implémenter ça en comptant sur les clés étrangères (requiert un moteur InnoDB pour MySQL), il doit bien y avoir relation entre les deux, ou par un déclencheur ?

    A défaut, il suffit de faire une requête COUNT et de regarder le nombre renvoyé sur cette autre table avant.

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut merci
    en faite je dois supprimer un produit que si il n 'appartient pas a une marque

  4. #4
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query('DELETE FROM produit WHERE idproduit = '.$idproduit.' AND idmarque IS NULL');
    ça devrait le faire, non ?

  5. #5
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Il faut faire la vérification sur toutes les tables

    DELETE FROM matable WHERE idproduit=1 AND (SELECT COUNT(*) FROM matable2 WHERE idproduit=1)=0

    C'est peut être gérable avec des imbrications de ce style.

    En francais :
    Je supprime de matable le produit qui a pour idproduit 1 et qui n'est pas dans matable2.

  6. #6
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    bah pour faire une réponse valable en SQL, il nous faudrait un extrait de la structure de la bd ...
    Sinon, pour répondre à , plutot que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM matable WHERE idproduit=1 AND (SELECT COUNT(*) FROM matable2 WHERE idproduit=1)=0
    quitta à faire une requête imbriquée, on peut aussi faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM matable WHERE idproduit=1 AND idproduit NOT IN (SELECT idproduit FROM matable2)

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut merci mais
    j'aurais dû préciser j'ai une liste déroulante qui est remplie avec une table mais je dois supprimer de la liste déroulante en mettant comme condition que si un produit appartient à ce constructeur on ne peut pas supprimer;merci de me répondre c'est important.

Discussions similaires

  1. Trouver valeurs d'une table n'existant pas dans une autre table
    Par aliasjcdenton dans le forum Langage SQL
    Réponses: 7
    Dernier message: 13/10/2011, 10h41
  2. Réponses: 4
    Dernier message: 07/05/2011, 11h50
  3. [MySQL] Jointure: récupérer joueur qui n'est pas dans l'autre table
    Par Snipy dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/10/2010, 15h07
  4. selectionner un resultat qui n'est pas dans une autre requete
    Par yosraisi dans le forum Langage SQL
    Réponses: 6
    Dernier message: 07/05/2008, 13h17
  5. Réponses: 2
    Dernier message: 11/11/2007, 16h49

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