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

PostgreSQL Discussion :

vues personnalisées sous postgresql


Sujet :

PostgreSQL

  1. #1
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Par défaut vues personnalisées sous postgresql
    Bonjour,

    J'aimerais bien savoir s'il y a possibilté de créer des vues personnalisées sous postgresql?
    ie: en fonction de la valeur d'un attribut au niveau d'une table, il faut choisir la bonne table avec laquelle il faut faire la jointure pour en tirer les autres champs

    merci d'avance.

  2. #2
    jnore
    Invité(e)
    Par défaut
    J'aimerais bien savoir s'il y a possibilté de créer des vues personnalisées sous postgresql?
    Bien sûr qu'il est possible de stocker des vues, ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE OR REPLACE VIEW "public"."essai_vue" 
    AS
    SELECT champ1,champ2
    FROM table
    where champ1='parametre'
    Qui plus est les vues sont parfaitement gérées par le pilote ODBC de Postgresql, dans le cas bien sûr où ça t'intéresse!

    Par contre:
    en fonction de la valeur d'un attribut au niveau d'une table, il faut choisir la bonne table avec laquelle il faut faire la jointure pour en tirer les autres champs
    Je n'ai pas bien compris !

  3. #3
    Membre expérimenté Avatar de budtucker
    Profil pro
    Développeur multimédia
    Inscrit en
    Avril 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Avril 2007
    Messages : 176
    Par défaut
    Une vue, n'est qu'une requête SQL permettant de relier des données de plusieurs tables et dont l'utilisation peut être très fréquentes sans avoir à se retaper et se trainer la requête SQL dans le code. Ou encore si on souhaite prévenir un éventuel changement de la structure d'une base de données et que l'on ne souhaite pas changer pour autant toute l'application. Dans ce cas, on ne changera que la requête qui est présente dans la vue.

    Si tu souhaites obtenir d'une vue des données différentes en fonction d'un "paramètre" (comme on le ferait pour une procédure), alors ce n'est pas possible. Cependant, avec un peu de "bidouille" tu pourrais éventuellement changer le résultat de ta vue en changeant par exemple une occurence dans une table de ta base de données (cf. l'exemple ci dessus). Dans ce cas, toutes les utilisations de la vue seront affectées. En gros, si tu souhaites que la vue change en fonction d'une date, alors c'est possible. Par contre, si tu souhaites que la vue change en fonction de l'utilisateur, ce n'est donc pas possible (à moins d'utiliser une fonction et pas une vue). Que l'on me corrige si je fais erreur.

    A+

  4. #4
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Par défaut
    Ok merci pour vos réponses.
    En fait ce que je voulais c'est de créer une vue de ce style :

    create view foobar as
    select date_id,A_table_id,something1
    ,case when something2=x then A1_table.A11 else A2_table.A21 end as foo
    ,case when something2=x then A1_table.A12 else A2_table.A22 end as bar
    from (... etc., etc. ...)

    donc mon problème est résolu

    vous avez parlé de la possibilté que la vue change en fonction d'une date merci de m'éclaircir ce point

  5. #5
    Membre chevronné Avatar de icer
    Inscrit en
    Janvier 2006
    Messages
    332
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 332
    Par défaut
    Par contre, si tu souhaites que la vue change en fonction de l'utilisateur, ce n'est donc pas possible (à moins d'utiliser une fonction et pas une vue). Que l'on me corrige si je fais erreur.
    Correction alors.

    Il y a des mécanismes qu'on peut mettre en place pour gérer ça.

    Tout dépend de ce qu'on souhaite faire comme 'changement de vues':
    - Si on veux simplement filtrer les lignes qui concernent l'utilisateur courant on peut ajouter une condition dans WHERE sur la variable USER : par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE VIEW mes_articles AS SELECT * FROM articles WHERE auteur = USER;
    - Si on veux afficher différentes colonnes en fonctions de l'utilisateur on peut passer par les shémas, comment ? En créant un shéma qui a le même non que l'utilisateur et en créant la vue dans ce shéma. Mais cette solution implique qu'il faudrait créer des vues pour toutes les tables pour chaque utilisateurs...

    D'ailleurs je suis en train de chercher une solution à un problème similaire :
    Définir le shéma par défaut en fonction du rôle de l'utilisateur.

    Les discussions concernant cette solution :
    http://www.developpez.net/forums/sho...d.php?t=347094
    http://www.developpez.net/forums/sho...d.php?t=356292

  6. #6
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Par défaut
    Ok merci pour les réponses

  7. #7
    Membre expérimenté Avatar de budtucker
    Profil pro
    Développeur multimédia
    Inscrit en
    Avril 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Avril 2007
    Messages : 176
    Par défaut
    Citation Envoyé par icer
    Correction alors....
    Merci pour cette correction !!!

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

Discussions similaires

  1. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 09h28
  2. select dans un trigger sous Postgresql
    Par kastor_grog dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/09/2003, 17h00
  3. Comment entrer des lettres accentuées sous postgresql ?
    Par Chihuahua dans le forum Requêtes
    Réponses: 11
    Dernier message: 28/08/2003, 08h04
  4. Triggers sous PostGreSQL
    Par Phaf dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/08/2003, 14h22
  5. Création d'utilisateur sous PostgreSQL 7.3.2 avec PHP
    Par duongkhang dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 06/06/2003, 13h10

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