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

InterBase Discussion :

Interbase et SQL


Sujet :

InterBase

  1. #1
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Points : 56
    Points
    56
    Par défaut Interbase et SQL
    Je veux faire une requête triant mes clients par C.A. décroissant, cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT CUST.CUST_ID, CUST.CUST_NAME, SUM(FACT.MTT) AS CA
    FROM CUST, FACT
    WHERE FACT.CUST_ID = CUST.CUST.ID
    GROUP BY CUST.CUST_ID, CUST.CUST_NAME
    ORDER BY SUM(FACT.MTT)
    Le pb se situe sur le "ORDER BY", mais l'idée est là !
    Température de l'eau : 28 °
    Température extérieure : 32°
    Température au fond du verre : 50° ~ 55°
    ------ Mangez des bananes ----------

  2. #2
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Ca ne serait pas ORDER BY CA
    au lieu de ORDER BY SUM(FACT.MTT) ?

    Je t'invite fortement à aller voir ceci :
    http://sql.developpez.com/sqlaz/select/#L2

    .. le reste n'est pas moins interessant !
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  3. #3
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 906
    Points : 6 031
    Points
    6 031
    Par défaut
    par C.A. décroissant
    Il faut donc rajouter DESC après le ORDER BY...
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  4. #4
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Points : 56
    Points
    56
    Par défaut
    Pour le DESC, je l'ai oublié dans la précipitation.

    Pour ce qui est du "ORDER BY CA DESC", voici la réponse d'une fenêtre interactive SQL de IBCONSOLE :


    Dynamic SQL Error
    SQL error code = -206
    Column unknown
    CA


    la colonne "CA" n'est pas connu !
    Température de l'eau : 28 °
    Température extérieure : 32°
    Température au fond du verre : 50° ~ 55°
    ------ Mangez des bananes ----------

  5. #5
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 906
    Points : 6 031
    Points
    6 031
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY SUM(FACT.MTT) DESC
    ne donne pas le résultat voulu ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  6. #6
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Points : 56
    Points
    56
    Par défaut
    bah non !
    Température de l'eau : 28 °
    Température extérieure : 32°
    Température au fond du verre : 50° ~ 55°
    ------ Mangez des bananes ----------

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut
    essai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT CUST.CUST_ID, CUST.CUST_NAME, SUM(FACT.MTT) AS CA
    FROM CUST, FACT
    WHERE FACT.CUST_ID = CUST.CUST.ID
    GROUP BY CUST.CUST_ID, CUST.CUST_NAME
    ORDER BY 3 DESC

  8. #8
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Points : 56
    Points
    56
    Par défaut
    Un seul mot : BRAVO !

    Mais c'est pas très intuitif. Pourquoi le numéro d'ordre de la colonne ?
    Température de l'eau : 28 °
    Température extérieure : 32°
    Température au fond du verre : 50° ~ 55°
    ------ Mangez des bananes ----------

  9. #9
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut
    le numéro d'ordre et simplement plus simple... c'est un truc de feinéant, mais relativement dangeureux, car si tu refais ta requête et que l'ordre des colonnes changes... bang!

    cela dit, normalement le order by sum() desc devrait fonctionner parfaitement!?

  10. #10
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Points : 56
    Points
    56
    Par défaut
    il est vrai que je préfèrerais passer par les noms de colonne, plus que par les numéros d'ordre. Je vais donc continuer à chercher pourquoi ça ne marche pas avec le order by sum() desc sous interbase (version 6 avec delphi 6). Mais dans l'immédiat je vais uitiliser ta technique.
    Température de l'eau : 28 °
    Température extérieure : 32°
    Température au fond du verre : 50° ~ 55°
    ------ Mangez des bananes ----------

  11. #11
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Je pense avoir trouvé le pb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT CUST.CUST_ID, CUST.CUST_NAME, SUM(FACT.MTT) AS CA
    FROM CUST, FACT
    WHERE FACT.CUST_ID = CUST.CUST.ID <-- ICI l'erreur !
    GROUP BY CUST.CUST_ID, CUST.CUST_NAME
    ORDER BY SUM(FACT.MTT) DESC
    Il faut évidement remplacer le . par un _ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT CUST.CUST_ID, CUST.CUST_NAME, SUM(FACT.MTT) AS CA
    FROM CUST, FACT
    WHERE FACT.CUST_ID = CUST.CUST_ID
    GROUP BY CUST.CUST_ID, CUST.CUST_NAME
    ORDER BY SUM(FACT.MTT) DESC
    Et là ca marche... en tout cas, je me suis fais un exemple semblable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT T_CUST.CUST_ID,
           T_CUST.CUST_NOM,
           SUM( T_FACT.FACT_MONTANT ) AS CA
    FROM T_FACT
       INNER JOIN T_CUST ON (T_FACT.CUST_ID = T_CUST.CUST_ID)
    GROUP BY T_CUST.CUST_ID, T_CUST.CUST_NOM
    ORDER BY SUM( T_FACT.FACT_MONTANT ) DESC
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  12. #12
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut
    bien vue, le "." je ne l'avais pas vue...

    donc problème résolu

Discussions similaires

  1. Interbase requête SQL qui ne fonctionne pas
    Par colorid dans le forum InterBase
    Réponses: 6
    Dernier message: 20/11/2007, 17h36
  2. Traiter des images avec Interbase et SQL
    Par XioN dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/06/2006, 22h35
  3. Interbase vers Sql server
    Par spyritx dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/01/2006, 08h37
  4. Mysql, Interbase ou SQL SERVER?
    Par zimzoum10 dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 22/03/2005, 19h07

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