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

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

    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

    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/...laz/select/#L1

    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  6. #6
    Membre du Club
    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/...z/select/#L1.7 et cela me semble correct !??

  7. #7
    Modérateur

    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
    ok merci je me le note comme référence

###raw>template_hook.ano_emploi###