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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    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
    Membre expérimenté

    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
    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 éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut merci
    en faite je dois supprimer un produit que si il n 'appartient pas a une marque

  4. #4
    Membre émérite 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 : 43
    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
    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 : 38
    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
    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 émérite 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 : 43
    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
    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)

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