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

Langage SQL Discussion :

Vue commune à deux tables


Sujet :

Langage SQL

  1. #1
    Membre averti Avatar de Asmodean
    Profil pro
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 378
    Points
    378
    Par défaut Vue commune à deux tables
    Bonjour,

    Je travaille actuellement sur un projet visant à interfacer deux outils php. J'ai déjà quelques idées sur la méthode mais en y pensant je m'étais demandé s'il n'existait pas un moyen d'avoir une sorte de vue qui serait un dénominateur commun entre deux tables.

    Par exemple la table xxx_client avec le champ id_client, et la table yyy_client avec un champ id_c. J'aimerais bien avoir une vue qui ai un champ id_client, et qui permet donc d'avoir une table générique "liant" les deux plateforme.

    J'ai pensé à faire une vue définit de ce genre là SELECT xxx.id_client id_client FROM xxx_client xxx JOIN yyy_client yyy ON yyy.id_c=xxx.id_client

    par exemple. Donc est ce que c'est une idée viable? Parce que je crois me rappeler que si la clause AS du create view est complexe (join etc) il n'y a pas moyen d'insérer des données par l'interédiaire de la vue. Si c'est possible comment faire que lorsque j'insere quelque chose dans cette vue ca soit insérer dans les deux tables?

    Donc si quelqu'un a un avis la dessus, ou si vous trouver que je me complique trop la vie n'hésitez pas à me le dire. Mais je trouvais ça simple.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Points : 99
    Points
    99
    Par défaut
    Oui, l'idée est viable en lecture, mais une vue ne peut être utilisée pour faire des insertions / modifications (du moins si elle porte sur plusieurs tables).

    Mais vous pouvez sûrement faire une table tampon. En plus de la vue, créez une troisième table qui reprend la même structure. Ajoutez-y un trigger qui, à chaque insertion, répercute les données sur les deux autres tables, puis vide la table tampon. De cette manière, vous avez la vue pour la consultation, et la table tampon pour l'écriture, qui est toujours vide et se content de "rediriger" les données.

    Par contre ce n'est pas un JOIN que vous devez utiliser, mais un UNION :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE VIEW client AS
    SELECT id_client FROM xxx_client
    UNION
    SELECT id_c FROM yyy_client;

Discussions similaires

  1. Table commune à deux tables et mêmes relations
    Par yeste64 dans le forum Diagrammes de Classes
    Réponses: 5
    Dernier message: 08/05/2012, 12h21
  2. Création d'une vue pour deux tables
    Par Athanor027 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 26/10/2010, 07h10
  3. Vue sur deux tables
    Par stephane.julien dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/03/2008, 15h46
  4. comment trouve la difference dans un champ commun entre deux tables
    Par pmorth dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/02/2008, 06h04
  5. Aide pour une requete, deux table, un champ commun.
    Par Space Cowboy dans le forum Requêtes
    Réponses: 1
    Dernier message: 15/03/2007, 10h59

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