SQL des conditions dans une vue, c possible !?

SQL des conditions dans une vue, c possible !? - SQL/NoSQL - Programmation

Marsh Posté le 24-04-2002 à 15:37:15    

En fait, pour des raison trop compliquées à expliquer sur le forum, j'aurai besoin de pouvoir écrire une vue avec une condition.
Je m'explique.
pour l'instant, g cette vue là:
[/CODE]
CREATE VIEW dbo.UTILISATEURS
AS
SELECT LOGIN AS UTIL, PASSWD AS PASSWORD,  
    USERNAME AS NOMUTIL, 0 AS CPT, 'XX ' AS CONFIG
FROM dbo.D_UTILISATEUR;
[CODE]
 
Cette vue fonctionne, ms pas tt à fait comme je voudrais.
Je voudrais éviter que le champ CONFIG contienne les 'XX' en dur.
Il faudrais que, SI le champ IsManager de la table D_UTILISATEUR est à 1, alors le champs CONFIG de la vue apparait à 'XX', sinon, il apparait à 'X '.
 
2 questions:
 - quelqu'un a t il compris qqch à mes explication quelque peu bordeliques ?
 - toi qui à compris ce dont g besoin, tu crois que c faisable ? et si oui; comment ?

Reply

Marsh Posté le 24-04-2002 à 15:37:15   

Reply

Marsh Posté le 24-04-2002 à 15:43:34    

oui c'est possible, avec la fonction decode

Reply

Marsh Posté le 24-04-2002 à 15:44:52    

c quoi ça !? la fonction decode ? tu peux préciser un peu stp ?

Reply

Marsh Posté le 24-04-2002 à 15:48:23    

c'est quoi ta base de données ???

Reply

Marsh Posté le 24-04-2002 à 15:50:23    

ça peut être n'importe quelle base de données. C pour un soft qui fonctionne avec toutes les bases de données (Oracle, BD2, MySQL, SQL Server, ...)
decode c une fonction spécifique à une DB, c ça !?
c pour ça que je précisais SQL: c pour du SQL pur que je pose ma question..

 

[jfdsdjhfuetppo]--Message édité par el_gringo le 24-04-2002 à 15:50:51--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 24-04-2002 à 16:04:42    

oui c'est une fonction propre :/

Reply

Marsh Posté le 24-04-2002 à 16:17:45    

Syntaxe de DECODE sous Oracle :
 
SELECT LOGIN AS UTIL, PASSWD AS PASSWORD,  
   USERNAME AS NOMUTIL, 0 AS CPT, DECODE(IsManager, 1,'XX','X';) FROM dbo.D_UTILISATEUR;
 
Explication générale :  
DECODE (Nom_champ_de référence, Valeur1_ref, Valeur1_renvoyée, Valeur2_ref, Valeur2_renvoyée, Valeur3_ref, Valeur3_renvoyée,..., Valeur_par_defaut)
 
NB Valeur_par_defaut n'est pas obligatoire, elle correspond en fait à la valeur renvoyée quand aucune condition précédente n'est satisfaite. Si Valeur_par_defaut n'est pas renseignée, DECODE renvoie NULL si aucune condition n'est remplie.

Reply

Marsh Posté le 24-04-2002 à 16:31:59    

irulan a écrit a écrit :

Syntaxe de DECODE sous Oracle :
 
SELECT LOGIN AS UTIL, PASSWD AS PASSWORD,  
   USERNAME AS NOMUTIL, 0 AS CPT, DECODE(IsManager, 1,'XX','X';) FROM dbo.D_UTILISATEUR;
 
Explication générale :  
DECODE (Nom_champ_de référence, Valeur1_ref, Valeur1_renvoyée, Valeur2_ref, Valeur2_renvoyée, Valeur3_ref, Valeur3_renvoyée,..., Valeur_par_defaut)
 
NB Valeur_par_defaut n'est pas obligatoire, elle correspond en fait à la valeur renvoyée quand aucune condition précédente n'est satisfaite. Si Valeur_par_defaut n'est pas renseignée, DECODE renvoie NULL si aucune condition n'est remplie.  




 
C gentil, ms je viens d'expliquer pourquoi je peux pas utiliser qqch de spécifique à nu SGBD (ni Oracle, ni aucun autre).
ça doit être en SQL pur.
Du coup, je doute que ça soit faisable, ms bon.
Desfois que...

Reply

Marsh Posté le 24-04-2002 à 16:49:51    

el_gringo a écrit a écrit :

 
 
C gentil, ms je viens d'expliquer pourquoi je peux pas utiliser qqch de spécifique à nu SGBD (ni Oracle, ni aucun autre).
ça doit être en SQL pur.
Du coup, je doute que ça soit faisable, ms bon.
Desfois que...  




 
Tu doit pouvoir t'en sortir en creeant 2 vues intermediaires (une pour X, une pour XX), puis une troisieme vue qui est l'union des deux.
 
tiens je sais pas si on peut creer une vue sur une vue...
 
Renaud

Reply

Marsh Posté le 24-04-2002 à 17:32:20    

- Renaud - a écrit a écrit :

 
 
Tu doit pouvoir t'en sortir en creeant 2 vues intermediaires (une pour X, une pour XX), puis une troisieme vue qui est l'union des deux.
 
tiens je sais pas si on peut creer une vue sur une vue...
 
Renaud  




 
Y a de l'idée...
Ms en y réfléchissant, je m'dis que ça n'fait que repousser le problème. Il me faudrai encore, dans ma 3e vue, (qui lie les 2 autres), pouvoir exprimer ma condition !
Y te semble pas !?

Reply

Marsh Posté le 24-04-2002 à 17:32:20   

Reply

Marsh Posté le 24-04-2002 à 20:07:00    

tu fais une procedure stocké ? no ?

Reply

Marsh Posté le 24-04-2002 à 21:38:21    

el_gringo a écrit a écrit :

 
 
Y a de l'idée...
Ms en y réfléchissant, je m'dis que ça n'fait que repousser le problème. Il me faudrai encore, dans ma 3e vue, (qui lie les 2 autres), pouvoir exprimer ma condition !
Y te semble pas !?  




 
non:
1ere vue

Code :
  1. CREATE VIEW dbo.UTILISATEURS1
  2. AS
  3. SELECT LOGIN AS UTIL, PASSWD AS PASSWORD, 
  4.    USERNAME AS NOMUTIL, 0 AS CPT, 'XX ' AS CONFIG
  5. FROM dbo.D_UTILISATEUR where isManager = 1;

 
 
2eme vue

Code :
  1. CREATE VIEW dbo.UTILISATEURS2
  2. AS
  3. SELECT LOGIN AS UTIL, PASSWD AS PASSWORD, 
  4.    USERNAME AS NOMUTIL, 0 AS CPT, 'X ' AS CONFIG
  5. FROM dbo.D_UTILISATEUR where isManager = 0;


 
3eme vue:

Code :
  1. CREATE VIEW dbo.UTILISATEURS
  2. AS
  3. select * from dbo.UTILISATEURS1 union select * from dbo.UTILISATEURS2


 
qq chose du genre
PS:niveau perf c'est pas le top

Reply

Marsh Posté le 25-04-2002 à 08:58:13    

fabd a écrit a écrit :

tu fais une procedure stocké ? no ?  




 
j'connais pas grand chose ds le domaine du SQL.
C quoi une procédure stockée ?

Reply

Marsh Posté le 25-04-2002 à 09:10:06    

- Renaud - a écrit a écrit :

 
 
non:
1ere vue

Code :
  1. CREATE VIEW dbo.UTILISATEURS1
  2. AS
  3. SELECT LOGIN AS UTIL, PASSWD AS PASSWORD, 
  4.    USERNAME AS NOMUTIL, 0 AS CPT, 'XX ' AS CONFIG
  5. FROM dbo.D_UTILISATEUR where isManager = 1;

 
 
2eme vue

Code :
  1. CREATE VIEW dbo.UTILISATEURS2
  2. AS
  3. SELECT LOGIN AS UTIL, PASSWD AS PASSWORD, 
  4.    USERNAME AS NOMUTIL, 0 AS CPT, 'X ' AS CONFIG
  5. FROM dbo.D_UTILISATEUR where isManager = 0;


 
3eme vue:

Code :
  1. CREATE VIEW dbo.UTILISATEURS
  2. AS
  3. select * from dbo.UTILISATEURS1 union select * from dbo.UTILISATEURS2


 
qq chose du genre
PS:niveau perf c'est pas le top  




 
Yess, bonne idée...
J'peux pas essayer maintenant, ms logiquement ça devrait coller ton truc !
Merci...

Reply

Marsh Posté le 25-04-2002 à 09:38:18    

Trop fort Renaud, ça marche !
Nickel, merci beaucoup. (si t'as des pbs en C/C++, je serais là... :D)

Reply

Marsh Posté le 25-04-2002 à 17:51:30    

el_gringo a écrit a écrit :

Trop fort Renaud, ça marche !
Nickel, merci beaucoup. (si t'as des pbs en C/C++, je serais là... :D)  




 
Euh non, je suis pas specialiste SQL mais plutot Object alors le C++ c'est pas trop un probleme
 
merci qd meme

Reply

Marsh Posté le 26-04-2002 à 14:09:25    

- Renaud - a écrit a écrit :

 
 
Euh non, je suis pas specialiste SQL mais plutot Object alors le C++ c'est pas trop un probleme
 
merci qd meme  




 
...Un peu d'humilité, ça fait du bien desfois !
Quel que soit sont niveau, on rencontre tous des merdes...

Reply

Marsh Posté le 26-04-2002 à 17:18:46    

el_gringo a écrit a écrit :

 
 
...Un peu d'humilité, ça fait du bien desfois !
Quel que soit sont niveau, on rencontre tous des merdes...  




 
Ce que je voulais dire, c'est que c'est plutot en vbscript ou en xsl que je peche.

Reply

Marsh Posté le 29-04-2002 à 09:56:17    

- Renaud - a écrit a écrit :

 
 
Ce que je voulais dire, c'est que c'est plutot en vbscript ou en xsl que je peche.  




 
ha... J'avais pas compris ça ! c fou...
j'pourrais t'aider ni ds l'un, ni ds l'autre... Ms vbscript en tt cas, ça devrai venir vite, c pas dur j'crois.
Bonne chance.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed