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

Bases de données Delphi Discussion :

problème de l'union


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 14
    Points
    14
    Par défaut problème de l'union
    bonjour,

    j'ai la requete suivant
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select mvt_n_debit,mvt_n_credit,abs(mvt_n_debit-mvt_n_credit) as soldetri  from MOUVEMENT where CMP_V_NCOMPTE='44110003' 
    and (MVT_D_DATE_MVT between '01/01/2010' and  '31/12/2010') and (mvt_rapport like 'non') 
     
     
    union all
     
     
    select mvt_n_debit,mvt_n_credit,abs(mvt_n_debit-mvt_n_credit) as soldetri  from MOUVEMENT where CMP_V_NCOMPTE='44110003'
    and (mvt_rapport like 'oui')
     
    order BY (mvt_n_debit+mvt_n_credit) desc

    il donne ca

    Serveur*: Msg 104, Niveau 15, État 1, Ligne 1
    Si l'instruction contient un opérateur UNION, les éléments ORDER BY doivent figurer dans la liste de sélection.
    merci de votre avance

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Le message d'erreur est pourtant suffisamment explicite !
    mvt_n_debit+mvt_n_credit ne fait pas partie du SELECT, d'où l'erreur.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY SOLDETRI -- avec un DESC si besoin

    Le UNION est-il vraiment obligatoire ? En ajustant le WHERE tu devrais arriver au même résultat. Non ?

    @+ Claudius

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    merci pour votre réponse

    mais quand j'éssayé l'une de ces requete de l'union il marche bien
    par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT mvt_n_debit,mvt_n_credit,abs(mvt_n_debit-mvt_n_credit) AS soldetri  FROM MOUVEMENT WHERE CMP_V_NCOMPTE='44110003'
    AND (mvt_rapport LIKE 'oui')
     
    ORDER BY (mvt_n_debit+mvt_n_credit) DESC
    il me donne une resultat et aussi avec l'autre requete

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Si mes souvenirs sont bon, le Order By on doit le mettre dans la première partie de la requête et pas à la fin
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Je pense que quand Shai parlait d'ajustement de la clause WHERE, il voulait dire quelque chose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT mvt_n_debit,mvt_n_credit,abs(mvt_n_debit-mvt_n_credit) AS soldetri  FROM MOUVEMENT WHERE CMP_V_NCOMPTE='44110003' 
    AND ((MVT_D_DATE_MVT BETWEEN '01/01/2010' AND  '31/12/2010') AND (mvt_rapport LIKE 'non') 
    OR (mvt_rapport LIKE 'oui'))
     
    ORDER BY (mvt_n_debit+mvt_n_credit) DESC
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  6. #6
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par casa88 Voir le message
    bonjour,

    j'ai la requete suivant
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select mvt_n_debit,mvt_n_credit,abs(mvt_n_debit-mvt_n_credit) as soldetri  from MOUVEMENT where CMP_V_NCOMPTE='44110003' 
    and (MVT_D_DATE_MVT between '01/01/2010' and  '31/12/2010') and (mvt_rapport like 'non') 
     
     
    union all
     
     
    select mvt_n_debit,mvt_n_credit,abs(mvt_n_debit-mvt_n_credit) as soldetri  from MOUVEMENT where CMP_V_NCOMPTE='44110003'
    and (mvt_rapport like 'oui')
     
    order BY (mvt_n_debit+mvt_n_credit) desc

    il donne ca



    merci de votre avance
    Salut,

    j'utilise souvent le order bye et je crois pas qu'il supporte les expressions, quel SGBD utilise-tu ?
    autre chose qui m'échappe, dans la partie du seclect il s'agit bien d'un (-) alors que dans le order c'est un (+), et je ne crois pas que ton SGBD soit assez intelligent pour savoir lire les champs tout seul or (champ1+champ2) ne donne le même résultat que (champ1-champ2) !
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

Discussions similaires

  1. [AC-2007] Problème sur requête Union
    Par manusp dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/02/2012, 15h17
  2. Problème dans un UNION
    Par david71 dans le forum SQL
    Réponses: 1
    Dernier message: 27/07/2010, 18h44
  3. Réponses: 15
    Dernier message: 07/11/2008, 15h53
  4. Réponses: 2
    Dernier message: 15/12/2006, 15h19
  5. Problème requête avec UNION et ORDER BY
    Par Yann21 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/12/2003, 11h02

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