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

SQL Procédural MySQL Discussion :

requête automatique entre 2 tables


Sujet :

SQL Procédural MySQL

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 59
    Par défaut requête automatique entre 2 tables
    Bonjour à tous!

    Dans la base de données j'ai (entre autres) 3 tables 'MEMBRES', 'GROUPES', 'DROITS' ces 3 tables sont reliées par 2 tables d'associations 'est_membre' et 'est_autorise'.

    |MEMBRES|---|est_membre|---|GROUPES|---|est_autorise|---|DROITS|

    Il existe plusieurs groupes liés à des droits spécifiques. Un membre obtient donc des droits par les biais des groupes. Dans ces groupes j'en ai un qui m'intéresse tout particulièrement c'est le groupe 'default'.

    Je souhaiterais qu'a chaque fois qu'un nouveau membre est inséré dans la base 'MEMBRES' il soit automatiquement ajouté au groupe 'default'. Mais pour ce faire il doit être ajouté dans l'association 'est_membre'.

    Exemple:
    L'utilisateur 'toto' dans la table 'MEMBRES' à l'identifiant -> 32
    Le groupe 'default' dans la table 'GROUPES' à l'identifiant -> 1

    Il faut donc relier dans la table d'association 'est_membre' les deux identifiants 'idMembre = 32' et 'idGroupe = 1'.

    Ma question est donc : est-il possible de créer une requête automatique directement en SQL pour "routiner" cette association entre les deux tables?

  2. #2
    Membre confirmé Avatar de hmimoud
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Par défaut
    Salut,

    A chaque fois que tu insères un nouveau membre insère juste après son identifiant et le "1" dans la table "est_membre".
    Met ces 2 instructions l'un après l'autre pour qu'à chaque fois que tu les appelles ça fonctionnera automatiquement !

  3. #3
    Membre confirmé Avatar de hmimoud
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Par défaut
    Je ne vois pas d'autre solutions que celle ci !

  4. #4
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    jeter un oeil sur l'utilisation des triggers, ca peut vous aider

    Bon courage

  5. #5
    Membre confirmé Avatar de hmimoud
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Par défaut
    Pense aussi au procédures stockées!

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 59
    Par défaut
    Ok merci je vais regarder les procédures stockées et les triggers pour voir ce que c'est et si ça peut m'aider.

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 59
    Par défaut
    En effet vous aviez raison, les triggers sont nos amis

    Voici comment j'ai réglé mon problème:
    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
    DELIMITER //
     
    CREATE TRIGGER lienUserMembre 
    AFTER INSERT ON usager
    FOR EACH ROW
    BEGIN
    	INSERT INTO est_membre (idUser,IdGroupe) VALUES (NEW.idUser, 1);
    END//
     
    CREATE TRIGGER delMembreGroupe
    BEFORE DELETE ON usager
    FOR EACH ROW
    BEGIN
     DELETE FROM est_membre WHERE idUser = OLD.idUser;
    END//
    DELIMITER ;
    Je ne connaissais pas mais maintenant je vais en mettre un peu partout, c'est vraiment magique!

    THX

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

Discussions similaires

  1. [AC-2003] Requête égalité entre deux tables non liées.
    Par Thotho-Maxime dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/07/2009, 09h14
  2. Requête sql entre deux tables
    Par jojo86 dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/02/2008, 19h19
  3. mise à jour automatique entre deux table
    Par debutantasp dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/02/2008, 11h00
  4. [requête] liaison entre 2 tables
    Par bugprog dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 26/04/2007, 09h53
  5. [Requête] Sommes entre plusieurs tables
    Par Ithilien dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 05/01/2007, 15h34

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