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

Paradox Discussion :

Groupement sur un résultat de fonction


Sujet :

Paradox

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 42
    Points : 19
    Points
    19
    Par défaut Groupement sur un résultat de fonction
    Bonjour !

    Malgré des essais multiples et variés, je ne parviens pas à effectuer des groupements sur des résultats de fonctions sous Paradox.

    Par exemple, pour regrouper des dates par années :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select
      Extract (Year from T.Date)
    From
      MaTable T
    Group By
      Extract (Year from T.Date)
    Ce genre de requête fonctionne parfaitement sous SQL Server, mais Paradox annonce une "Fonctionnalité non supportée".

    Existe-t-il un moyen de contourner le problème ?

    Merci !

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    tiens c'est nouveau : Paradox a des fonctions ?!?
    je vais regarder ça de plus près

    @+
    (nota ceci est juste pour t'indiquer que ton post est lu )
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    mais oui, mais oui Paradox a des fonctions génial j'ai gagné ma journée en apprenant quelque-chose de nouveau (l'utilité ne s'en étant jamais fait sentir) . Y'en a d'autres

    par contre pour le group by , dur dur

    j'ai tenté un 'group by 0' qui sous BDD donne pourtant d'excellent résultat mais sans succés . Pas moyen non plus de faire un champ calculé


    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // équivaut a faire un champ calculé
    ALTER TABLE matable ADD AN INTEGER
    UPDATE matable SET AN=EXTRACT(YEAR FROM DATE)
     
    //et par conséquent plus de problème de group by sur AN
    SELECT AN,SUM(MONTANT) FROM MATABLE GROUP BY AN
     
    // à la fin je l''enlève
    ALTER TABLE matable DROP AN
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 42
    Points : 19
    Points
    19
    Par défaut
    Ouch !

    Effectivement, ça permet de faire le groupement. Mais l'ajout et la suppression de champs ne sont pas trop envisageables dans mon cas hélas...

    Cela dit après fouiillage et farfouillage de web, il semblerait que Paradox ne soit pas vraiment ami avec les groupements sur autre chose qu'un champ... Exit les "Extract (Year FROM T.Date)" et autres "0"...

    Je suis toujours preneur d'une solution miracle, en espérant que la proposition de SergioMaster (que je remercie au passage ! ) ne soit pas la seule.


    (Sinon, Paradox est un peu poussiéreux, mais il y a quand même quelques fonctions à disposition, sisi !)

  5. #5
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Voilà une possibilité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT VILLE, COUNT(*)
    FROM "Clients.DB" 
    GROUP BY VILLE
    ORDER BY VILLE

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par ALWEBER Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT VILLE, COUNT(*)
    FROM "Clients.DB" 
    GROUP BY VILLE
    ORDER BY VILLE
    sans vouloir te vexer cela ne repond pas au problème d'un groupement sur une valeur obtenue via une fonction .

    de plus dans ton code je ne crois pas que ton DISTINCT et ton ORDER BY soit utiles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT VILLE, COUNT(*)
    FROM "Clients.DB" 
    GROUP BY VILLE
    devrait fournir le même résultat ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Pour sergio-master : je suis totalement vexé mais tu as raison

    Pour bobototo : Tu travailles avec l'outil Paradox ou avec Delphi ?
    Dans les deux cas la création de table temporaires en mémoire peut être une solution

  8. #8
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut
    Une solution consiste a créer une "Vue" enregistrée sur un fichier.
    je m'explique, on crée une requête pour rapatrier tous les enregistrement de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Extract(Year FROM T.Date) as ANNEE
    FROM MaTable T
    Cette requête est enregistrée avec n'importe quel éditeur de texte avec l'extension ".SQL" dans le même répertoire ou se trouve la base de données, dans notre exemple sous le nom de "Vue.sql".
    Maintenant, on crée une requête pour utiliser notre "vue" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ANNEE
    FROM "Vue.sql"
    GROUP BY ANNEE
    Si vous êtes libre, choisissez le Logiciel Libre.

  9. #9
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Merci tryExceptEnd
    Celà fait longtemp que je travaille sous Paradox et je ne connaissais pas !

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 42
    Points : 19
    Points
    19
    Par défaut
    Rebonjour ! Et merci pour vos réponses

    Citation Envoyé par ALWEBER Voir le message
    Pour bobototo : Tu travailles avec l'outil Paradox ou avec Delphi ?
    Dans les deux cas la création de table temporaires en mémoire peut être une solution
    Le trio Delphi-BDE-Paradox, j'aurais effectivement pu le préciser.

    Citation Envoyé par TryExceptEnd Voir le message
    Une solution consiste a créer une "Vue" enregistrée sur un fichier.
    Ce mécanisme est intéressant, je ne connaissais pas non plus. On peut utiliser indifféremment dans une requête des mélanges de vues et tables ?

    Je vais de ce pas faire deux trois essais, merci pour l'astuce

    (même si hélas, dans le cas qui me concerne, ça ne me semble pas vraiment envisageable non plus
    Aucune solution en SQL pur ?)

Discussions similaires

  1. [MySQL] Fonctions de trie sur un résultat d'une requête
    Par sara21 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/02/2015, 07h00
  2. Retour a la ligne sur le résultat d'une fonction
    Par bastounseb dans le forum Langage
    Réponses: 9
    Dernier message: 01/10/2014, 01h59
  3. Réponses: 11
    Dernier message: 30/01/2014, 12h59
  4. Contraite NULL sur une colonne en fonction d'une autre colon
    Par speedy1496 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/04/2004, 19h29
  5. Détecter l'appui sur la touche de fonction F2
    Par titiyo dans le forum Composants VCL
    Réponses: 6
    Dernier message: 18/06/2003, 11h07

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