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 :

Trier une requête avec UNION ALL


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 243
    Points : 65
    Points
    65
    Par défaut Trier une requête avec UNION ALL
    Bonjour,
    Dans un champ de saisi sur une page web réalisé avec joomla, je mets la requête suivante qui permet de sélectionner un valeur
    Le problème c'est que si je rajoute "BY name ASC" cela ne fonctionne pas
    J'ai essayé différentes parenthèses mais cela ne fonctionne pas plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (SELECT "" as value,"- choisir une valeur -" as text )
    UNION ALL
    (SELECT id as value, name as text FROM #__contact_details WHERE catid=26 )

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 383
    Points
    18 383
    Par défaut
    Le tri s'applique après l'UNION ALL et donc sur les colonnes de celui-ci ; value et text dans votre cas.
    De plus que suppose que vous voulez l'entête en premier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      SELECT "" as value, "- choisir une valeur -" as text
       UNION ALL
      SELECT id as value, name as text
        FROM #__contact_details
       WHERE catid = 26
    ORDER BY case value when "" then 1 else 2 end asc
           , text asc;
    Vous n'avez pas spécifier votre SGBD, donc il faudra peut-être réécrire case value when "" en case when value is null.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 243
    Points : 65
    Points
    65
    Par défaut
    C'est mysql
    je n'ai pas compris "case value when "" en case when value is null. ". j'ai essayé mais du coup j'ai eu des erreurs;

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Donnez la requête que vous avez essayée et le message d'erreur obtenu.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 837
    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 837
    Points : 52 927
    Points
    52 927
    Billets dans le blog
    5
    Par défaut
    Une chaine de caractères en SQL s'exprime entourée d'apostrophes et non de guillemets. Commencez à apprendre le B A BA du SQL. Mon site web peut vous y aider :
    https://sqlpro.developpez.com/cours/sqlaz/select/#L1

    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/ * * * * *

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 243
    Points : 65
    Points
    65
    Par défaut
    Merci pour vos remarques.
    J'avai fait une erreur bête de syntaxe. Néanmoins je n'ai pas compris la remarque de SQL Pro.
    Je fais rarement du sql mais en copiant la suggestion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT "" as value, "- choisir une valeur -" as text
       UNION ALL
      SELECT id as value, name as text
        FROM #__contact_details
       WHERE catid = 26
    ORDER BY case value when "" then 1 else 2 end asc
           , text asc;
    j(ai vérifié https://sqlpro.developpez.com/cours/sqlaz/select/#L1.7 et cela me semble correct !??

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Normalement, vous auriez du écrire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT '' as value, '- choisir une valeur -' as text
       UNION ALL
      SELECT id as value, name as text
        FROM #__contact_details
       WHERE catid = 26
    ORDER BY case value when '' then 1 else 2 end asc
           , text asc;
    Dans la référence de SQLPro que vous citez, les guillemets entourent des mots du langage SQL utilisés comme noms de colonne ou de table, ce qui est une chose à proscrire absolument.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 243
    Points : 65
    Points
    65
    Par défaut
    ok merci je me le note comme référence

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

Discussions similaires

  1. Trier le résultat global sur une requête avec UNION ALL
    Par monlou dans le forum Langage SQL
    Réponses: 7
    Dernier message: 27/08/2018, 15h54
  2. Optimisation d'une requête avec UNION ALL
    Par jgfa9 dans le forum Requêtes
    Réponses: 11
    Dernier message: 01/08/2012, 21h53
  3. Réponses: 9
    Dernier message: 19/12/2011, 17h11
  4. [UNION] - Perte de résultat sur une requête avec UNION
    Par lecail65 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 01/09/2009, 14h30
  5. Trier une requûete avec plusieurs UNION
    Par bobosh dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 31/07/2008, 16h28

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