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

SQL Firebird Discussion :

Créer une vue pour trier une requete UNION ?


Sujet :

SQL Firebird

  1. #1
    Membre confirmé
    Avatar de Etienne Bar
    Homme Profil pro
    Consultant indépendant
    Inscrit en
    Octobre 2002
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Consultant indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2002
    Messages : 282
    Points : 593
    Points
    593
    Par défaut Créer une vue pour trier une requete UNION ?
    Bonjour et surtout très bonne année 2003 à tous !

    Soit la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select inc_nomprenom, inc_num1 AS num_tel from interlocuteurs where inc_num1 is not null
    UNION
    select inc_nomprenom, cast('-' as varchar(20)) AS num_tel from interlocuteurs where inc_num1 is null;
    qui, vous l'aviez deviné ;-), me permet d'obtenir une liste de personnes et de numéros de téléphones en remplaçant les valeurs null par des '-'.

    Deux questions sur le sujet :

    1) Pour trier cette requête par nom prénom, j'ai été contraint de créer une vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create view annuaire (NomPrenom, Telephone) as
    select inc_nomprenom, inc_num1 AS num_tel from interlocuteurs where inc_num1 is not null
    UNION
    select inc_nomprenom, cast('-' as varchar(20)) AS num_tel from interlocuteurs where inc_num1 is null;
    et de faire ensuite un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from annuaire order by NomPrenom
    Y'a t'il moyen de faire plus simple ?

    2) Je n'ai pas trouvé le moyen d'écrire un seul Select (sinon le problème ne se poserait pas) pour transformer les valeurs nulles de ma colonne 'INC_NUM1' en '-'. Le 'When ... then ... end case' n'existe pas avec Interbase ?

    Merci d'avance pour votre aide !

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut Re: Créer une vue pour trier une requete UNION ?
    tu peux faire une procedure stoquée sinon...

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 856
    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 856
    Points : 52 993
    Points
    52 993
    Billets dans le blog
    6
    Par défaut
    Toute requête quelle qu'elle soit peut possèder une clause de tri

    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
     
    select inc_nomprenom, inc_num1 AS num_tel
    from   interlocuteurs
    where  inc_num1 is not null 
    UNION 
    select inc_nomprenom, cast('-' as varchar(20)) AS num_tel
    from   interlocuteurs
    where  inc_num1 is null
    ORDER  BY inc_nomprenom, num_tel
     
    ou
     
    select inc_nomprenom, inc_num1 AS num_tel
    from   interlocuteurs
    where  inc_num1 is not null 
    UNION 
    select inc_nomprenom, cast('-' as varchar(20)) AS num_tel
    from   interlocuteurs
    where  inc_num1 is null
    ORDER BY 1, 2
    A +

  4. #4
    Membre confirmé
    Avatar de Etienne Bar
    Homme Profil pro
    Consultant indépendant
    Inscrit en
    Octobre 2002
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Consultant indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2002
    Messages : 282
    Points : 593
    Points
    593
    Par défaut
    Dans ce cas c'est la seconde syntaxe qui fonctionne.

    Merci, Frédéric (et, au passage, bravo pour ton site sur SQL qui m'apprend plein de trucs !)

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

Discussions similaires

  1. Lien dans un frame d'une cadre pour ouvrir une autre page sur une même fenêtre
    Par maelislah dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 27/06/2015, 20h39
  2. Réponses: 1
    Dernier message: 11/07/2014, 16h32
  3. Comment faire pour qu'une vue renvoie toujours une ligne
    Par jfouche dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/10/2009, 10h01
  4. [Conception] Comment créer un lien pour effectuer une requete ?
    Par Poutchou dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/03/2006, 11h54
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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