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 :

scripts pour SQL et JOIN


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 37
    Points
    37
    Par défaut scripts pour SQL et JOIN
    Bonjour je suis nouveau sur du SQL et j'aimerai mettre en place un script

    Je dois DELETE des identifiants (style ID=60000) de tables de droits différents
    et faire un JOIN pour les supprimer dans la table qui référence ces ID (dans une autre table)

    Sauriez vous faire un exemple que j'essayerais d'adapter ?

    merci d'avance

    Pour le moment je fais betement des

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE FROM [matable] WHERE
    ID= 60001 OR
    ID= 60002 OR

    le but étant de faire un JOIN avec [matable2] pour supprimer ces ID dans matable 2 plutot que de recommencer a faire des DELETE

    merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux mettre un contrainte de suppression en cascade

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE [matable2] T2
       ADD CONSTRAINT FK_matable1_matable2_Cascade
       FOREIGN KEY (ID) REFERENCES matable(ID) ON DELETE CASCADE

    Au passage
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM [matable] WHERE ID IN (60001, 6002)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 37
    Points
    37
    Par défaut
    Merci
    Décidé d'aller acheter le SQL pour les nuls

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE [matable2] T2
       ADD CONSTRAINT FK_matable1_matable2_Cascade
       FOREIGN KEY (ID) REFERENCES matable(ID) ON DELETE CASCADE

    explication de fonctionnement ?
    et T2 correspond à quoi ?

    Encore merci pour ton aide, ca ferait plus propre concernant le 2ème exemple que tu mas donné

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Le T2 c'est un résidu de mon copier/coller.

    Le principe est que
    - ID dans ta table2 soit déclaré clef étrangère de ID dans ta table 1, c'est à dire qu'il ne peut pas y avoir d'ID dans table2 qui n'existe pas dans table1.
    - Si un ID est supprimé dans table1, toutes les références à cet ID dans table2 sont également supprimés (en cascade).

    Tu as des cours par ici, si tu veux aller plus loin
    http://sqlpro.developpez.com/cours/s...partie2#L7.2.4

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 37
    Points
    37
    Par défaut
    je te remercie

    developpez.com est passé dans mes favori et les cours sont super bien écrits donc oui, il va me falloir aller plus loin dans tous les cas

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 37
    Points
    37
    Par défaut
    En gros j'en suis là :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DELETE FROM TPROREA0 WHERE ID_PST_OPE IN (55322,65030,67641)
     
    ALTER TABLE TPSTOPE0
    ADD CONSTRAINT FK_TPROREA0_TPSTOPE0_Cascade
    FOREIGN KEY (ID_PST_OPE) REFERENCES TPROREA0(ID_PST_OPE) ON DELETE CASCADE

    J'ai une erreur :
    Aucune clé primaire ou candidate dans la table référencée TPROREA0 ne correspond à la liste des colonnes de référence de la clé étrangère FK..._Cascade
    Impossible de créer la contrainte. Voir les erreurs précédentes
    -------------------

    en gros je supprime des droits d'utilisateurs dans TPROREA0 mais j'aimerais que ca impacte ma table TPSTOPE0 pour des user qui n'existent plus.

    (ou sens inverse seriat plus logique supprimer dans TPSTOPE0 les utilisateurs qui n'existent plus et que ca impacte l'ensemble de mes tables qui donne les droits. Il y en a 6 autres).

    Puisque pour le cas ou le utilisateurs ne doivent plus exister
    les supprimer de TPSTOPE0 et supprimer en cascades dans les autres tables choisies

    je sais pas si ca fait clair mais c'est ce que j'essaye de faire (et ca serait plus propre comme ca :p

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est bien dans ce sens qu'il faut le voir : si tu supprimes un utilisateur, les droits qui le concernent sont supprimés aussi.

    Execute ces deux requêtes.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ALTER TABLE TPROREA0
    ADD FOREIGN KEY (ID_PST_OPE)
    REFERENCES TPROREA0(ID_PST_OPE);
     
    ALTER TABLE TPROREA0 
    ADD CONSTRAINT fk_TPSTOPE0_TPROREA0
    FOREIGN KEY (ID_PST_OPE)
    REFERENCES TPROREA0(ID_PST_OPE) ON DELETE CASCADE;

    Attention par contre, ces requêtes définissent le mécanisme, ils sont à faire une fois pour toutes et non pas à chaque suppression.

Discussions similaires

  1. Réponses: 9
    Dernier message: 26/01/2011, 09h56
  2. Script pour exécuter un fichier .sql
    Par jeanjean0403 dans le forum SQL
    Réponses: 7
    Dernier message: 04/10/2007, 21h55
  3. [SQL] SCRIPT pour avoir une navigation avec les lettres de l'alphabet
    Par gantec dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 20/09/2007, 08h45
  4. Script pour protéger les formulaires PHP de l'injection SQL
    Par thebay dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 15/05/2007, 16h23
  5. Generer un script pour une BDD "*.sql"+"*.bat
    Par subzero82 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/08/2005, 16h47

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