|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mars 2007 Messages : 10 ![]() |
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. |
|
|
00
|
|
|
#2 | ||||
|
Invité(e)
Messages : n/a ![]() |
Citation:
Code :
Par contre: Citation:
|
||||
00
|
|
|
#3 |
|
Membre actif
![]() Développeur multimédia Inscription : avril 2007 Messages : 175 ![]() |
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+ |
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : mars 2007 Messages : 10 ![]() |
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 |
|
|
00
|
|
|
#5 | |
|
Membre éclairé
![]() Inscription : janvier 2006 Messages : 332 ![]() |
Citation:
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 :
CREATE VIEW mes_articles AS SELECT * FROM articles WHERE auteur = USER; 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 |
|
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : mars 2007 Messages : 10 ![]() |
Ok merci pour les réponses
|
|
|
00
|
|
|
#7 | |
|
Membre actif
![]() Développeur multimédia Inscription : avril 2007 Messages : 175 ![]() |
Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com