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 :

SQL VIEW set DEFAULT et NOT NULL


Sujet :

Langage SQL

  1. #1
    Invité
    Invité(e)
    Par défaut SQL VIEW set DEFAULT et NOT NULL
    Bonjour, je suis tout nouveau sur SQL. j'arrive d'un environnement ACCESS.
    Je me suis acheté 2-3 bouquins et en avant.

    J'ai une question concernant une ligne de commande CREATE VIEW:

    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
     
        CREATE VIEW v_suiviprixproduitenddate AS
     
    SELECT  t_produit.produitid,
            t_produit.produit,
            t_suiviprixproduit.prixdiffus,
            t_suiviprixproduit.prixdirect,
            t_suiviprixproduit.datedebutprix,
            (
                SELECT MIN(datedebutprix) - INTERVAL 1 DAY
                    FROM t_suiviprixproduit InnerSPP
                        WHERE t_produit.produitid = InnerSPP.produitid
                            AND InnerSPP.datedebutprix > t_suiviprixproduit.datedebutprix
              ) AS datefinprix
           FROM t_produit
           JOIN t_suiviprixproduit
            ON t_produit.produitid = t_suiviprixproduit.produitid;
    Ca marche bien sauf que ce code retourne un datefinprix NULL lorqu'il y a une seule occurrence prix pour un produitid. Je préférerais avoir 9999-12-31 as DEFAULT

    Comment faire?

    Merci de votre retour.

    Matt

  2. #2
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut
    Salut Chacal33,

    Tu peux utiliser la fonction COALESCE(valeur à tester, valeur par défaut) qui te permet de donner une valeur par défaut si valeur null.
    Pour ta requête ça donnerai quelque chose comme çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT ...
    COALESCE((
                SELECT MIN(datedebutprix) - INTERVAL 1 DAY
                    FROM t_suiviprixproduit InnerSPP
                        WHERE t_produit.produitid = InnerSPP.produitid
                            AND InnerSPP.datedebutprix > t_suiviprixproduit.datedebutprix
              ), 'ta valeur par défaut') AS datefinprix 
    FROM ...
    Cette fonction est un raccourci de l'expression CASE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CASE  
    WHEN (expression1 IS NOT NULL) THEN expression1  
    WHEN (expression2 IS NOT NULL) THEN expression2  
    ...  
    ELSE expressionN  
    END
    Pour plus d'info tu peux de référer à la doc Microsoft
    https://docs.microsoft.com/fr-fr/sql...ql-server-2017

  3. #3
    Invité
    Invité(e)
    Par défaut
    Super.

    Je viens de tester et ça marche super bien.
    Je ne connaissais pas cette fonction.

    Merci beaucoup

  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 772
    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 772
    Points : 52 737
    Points
    52 737
    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/ * * * * *

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

Discussions similaires

  1. [DB2/SQL] Passer une colonne de NULL à NOT NULL
    Par tux2005 dans le forum DB2
    Réponses: 6
    Dernier message: 08/06/2007, 22h57
  2. equivallent de int(11) NOT NULL default '0' en oracle
    Par soumia1988 dans le forum Oracle
    Réponses: 4
    Dernier message: 09/03/2007, 15h35
  3. Sql serveur 2000 Changer null/not null et valeur par defaut
    Par mictif dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/03/2006, 07h55
  4. [debutant]sql serveur et not null?
    Par christophebmx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/11/2004, 16h21
  5. [SQL] supprimer le "not null" à un type
    Par AnestheziE dans le forum SQL
    Réponses: 10
    Dernier message: 27/11/2003, 13h56

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