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

Requêtes PostgreSQL Discussion :

condition dans creation de la vue


Sujet :

Requêtes PostgreSQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 40
    Points : 32
    Points
    32
    Par défaut condition dans creation de la vue
    bonjour à tous
    je veux creer une vue qui n'amène que 1 et 0 comme valeur ; 1 pour toutes les lignes où la colonne concernée de la table contient 1 et 0 dans tous les autres cas ,pour toutes les lignes de la table . c'est à dire , ma vue portera sur une colonne A de ma table , elle amènera 1 pour toutes les lignes où A = 1 et 0 pour toutes autres valeurs contenant A . j'ai fait assez de tentative pour cette requette , car j'ai tenté d'utiliser "si" , mais ça marche pas ; aidez moi s'il vous plait .
    merci d'avance

  2. #2
    Membre actif Avatar de SaintAmand
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Points : 203
    Points
    203
    Par défaut
    Citation Envoyé par bennkabazz Voir le message
    j'ai fait assez de tentative pour cette requette , car j'ai tenté d'utiliser "si" , mais ça marche pas
    Bonjour,

    Pourquoi ne pas nous montrer l'une de vos tentatives ? Au moins nous pourrions vous dire pourquoi cela ne marche pas, tandis que là ...

    Je suppose que «si» = CASE ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    j'ai eu l'impression tout dernièrement que ce que j'ai fait necessite l'utilisation de "si" qui n'exite pas dans Postgresql au niveau SQL et je ne sais pas utiliser le "case " qui le remplace . vous pouvez me donner un exemple s'il vous plait ?
    comme j'ai vu aussi que mon chemin n'etait pas du tout le bon , c'est pourquoi je me suis pas fatigué de poster un exemple .
    merci de votre aide

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 83
    Points
    83
    Par défaut Deux exemples
    Salut,

    voilà deux petits exemples de codes :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    --Pour tester:
    create table ma_table
    (
    	ma_valeur int
    );
     
    insert into ma_table values (1),(2),(3),(0),(1);
     
    --version avec case SQL non fonctionnel :
    select CASE (ma_valeur=1) WHEN TRUE THEN 1 ELSE 0 END from ma_table;
     
    --version avec IF PLPGSQL fonctionnel :
    DROP FUNCTION ma_fonction(varchar);
    CREATE OR REPLACE FUNCTION ma_fonction(ma_table varchar)
      RETURNS SETOF int AS
    $BODY$
    DECLARE
    	res int;
    	query text;
    BEGIN
    	query := 'select ma_valeur from ' || quote_ident(ma_table) || ';';
    	FOR res IN EXECUTE query LOOP
    	IF (res=1) 
    	THEN RETURN  NEXT 1;
    	ELSE RETURN NEXT 0;
    	END IF;
    	END LOOP;
    	RETURN;
    END;   
    $BODY$
    LANGUAGE 'plpgsql' VOLATILE;
    --appel de la fonction
    select * from ma_fonction('ma_table');

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    Sauf que l'exemple de CASE que vous avez donné est biscornu car il impose une fonction totalement contre performante dans la partie CASE...
    SELECT CASE (ma_valeur=1) WHEN TRUE THEN 1 ELSE 0 END FROM ma_table;
    Voici comment on écrit un CASE plus propre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CASE ma_valeur WHEN 1 THEN 1 ELSE 0 END FROM ma_table;
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Condition dans le outer join d'une vue
    Par boubil dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/11/2012, 11h15
  2. Introduire une condition dans une requete
    Par DeezerD dans le forum Langage SQL
    Réponses: 9
    Dernier message: 12/10/2004, 18h13
  3. Condition dans une requête
    Par fdloisel dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/08/2004, 16h55
  4. Réponses: 7
    Dernier message: 12/07/2004, 22h30
  5. Creation d'une vue dynamique ?
    Par Simeans2004 dans le forum Administration
    Réponses: 5
    Dernier message: 01/07/2004, 15h25

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