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

Requêtes et SQL. Discussion :

Alternative à SomDom


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Homme Profil pro
    gérant
    Inscrit en
    Mai 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : gérant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2022
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Alternative à SomDom
    Bonjour,

    j'ai une requête avec des factures (IDFACTURE) par maison (IDMAISON) et la présence de personnes en mois. Je voudrais avoir (1) le total de la présence par facture et (2) le total par facture et par Etage. J'ai donc fait un Dsum, mais l'exécution de la requête est vraiment lente. Surtout qu'il y aura d'autres SomDom à faire par la suite et à regrouper (j'ai mis ici un exemple avec deux DSUM)

    Initialement, je faisais des requêtes : 1 requête où je regroupe IDFACTURE et fais la somme de présence, une autre ou je fais de même en ajoutant les étages etc et puis je regroupe les requêtes, mais je me retrouvais avec pas mal de requêtes et ça devenait un peu laborieux de m'y retrouver. Du coup j'ai voulu regrouper mais l'option du SOMDOM ne semble pas optimale.

    J'ai passé plusieurs heures sur le net pour trouver une autre solution et j'ai compris que les fonctions de domaines étaient à éviter. J'ai essayé de créer une fonction avec "Do While Loop" mais ça prenait également pas mal de temps pour générer le code et je maîtrise assez mal ces fonctions.

    Je me tourne donc vers la communauté Je ne demande un code déjà tout prêt, mais peut-être juste une indication/direction et je ferai ensuite les recherches pour résoudre le problème, mais au moins savoir quelle piste plutôt explorer :
    > est-ce que le meilleur moyen reste d'avoir plusieurs requêtes (une par calcul) ?
    > est-ce que le SOMDOM est possible mais qu'il existerait une manière de rendre la requête plus rapide ?
    > est-ce qu'il faut passer par du vba / créer une public function ?
    > est-ce qu'il y a d'autres choses à essayer ?

    j'ai vu que plusieurs personnes avaient eu le même problème et qu'on leur conseillait de maintenir plusieurs requêtes. Avant de me résigner à cela, je préfère m'assurer que j'ai tout essayé.


    merci pour votre aide



    Nom : cc.PNG
Affichages : 140
Taille : 32,4 Ko

  2. #2
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2022
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2022
    Messages : 141
    Points : 219
    Points
    219
    Par défaut
    Si SOMDOM n'est pas optimale, ce n'est pas la faute de SOMDOM; il faut voir comment vous avez conçu votre BD et comment vous avez construit vos requêtes, car in fine ce que vous demandez semble fort simple à réaliser.
    Si vous voulez, vous pouvez poster copie compressée de votre BD (avec info fictives), il y aura toujours qq'un pour concevoir une solution viable.

  3. #3
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 926
    Points
    55 926
    Billets dans le blog
    131
    Par défaut
    Salut.

    Pourquoi pas une requête avec regroupement. D'une façon générale, il faut éviter les fonctions de domaine, qui sont très chronophages et qui ont été créées pour faciliter le traitement pour des personnes qui ne maîtrisent pas SQL, mais ce ne sont que de pis-aller.

    La conception de la BD n'a que peu à voir avec la lenteur du traitement. Ce qui crée la lenteur d'une fonction de domaine, c'est son fonctionnement.



    Citation Envoyé par Belga16 Voir le message
    Si SOMDOM n'est pas optimale, ce n'est pas la faute de SOMDOM[...]
    Bien sûr que si que c'est la faute de SOMDOM. Il suffit d'en comprendre le fonctionnement pour se rendre compte qu'elle ralentira de plus en plus le fonctionnement de l'application au fur et à mesure de l'augmentation du nombre de lignes. C'est une fonction "confort" mais qui relance la requête à chaque invocation. je n'ose même pas imaginer cela en réseau... Merci donc de bien maîtriser les notions sur lesquelles vous vous proposez de répondre.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Futur Membre du Club
    Homme Profil pro
    gérant
    Inscrit en
    Mai 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : gérant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2022
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    merci beaucoup pour votre réponse rapide. Ca m'aide déjà beaucoup de savoir que le Dsum reste une piste.
    J'ai ici repris ma base de données en isolant les tables nécessaires (en ne mettant que quelques données) et la requête avec mes deux Dsum et malgré tout, je vois que la requête peine à s'ouvrir.

    Je précise que le Dsum se base sur PRESENCE qui est déjà un calcul généré via une Public Function. Donc je me suis déjà dit que l'accumulation de calcul pouvait être un souci. Ceci dit, j'avais essayé de scinder les requêtes : 1 requête avec les Présences que j'ai redéposées dans une table et une deuxième avec les DSUM sur base de la table et non plus de la requête, mais malgré tout, ça met du temps à s'ouvrir, voire plante le programme. Donc je pense que ça provient des Dsum.

    Dans la version ci-jointe, l'ouverture de la requête est un peu lente, mais acceptable. Par contre dès qu'il y a des milliers de données, ça devient long.

    merci bien


    Database3.zip

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 926
    Points
    55 926
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par ouftinondidju Voir le message
    [...]ça met du temps à s'ouvrir, voire plante le programme. Donc je pense que ça provient des Dsum.

    Dans la version ci-jointe, l'ouverture de la requête est un peu lente, mais acceptable. Par contre dès qu'il y a des milliers de données, ça devient long. [...]

    Comme je l'ai dit, il est préférable de ne pas utiliser SOMDOM... Il faut bien comprendre son fonctionnement et on perçoit alors vite qu'elle inutilement lourde puisqu'elle crée une requête à chaque appel.

    Il est de loin préférable d'utiliser une requête de regroupement. Une simple copie d'écran de la structure des tables, du formulaire en mode création ou utilisation et une bonne description du besoin devraient suffire pour apporter une réponse plus pertinente.



    Citation Envoyé par ouftinondidju Voir le message
    [...]Ca m'aide déjà beaucoup de savoir que le Dsum reste une piste.[...]
    SOMDOM n'est clairement pas une piste. Il ne faut pas croire tout ce qui est donné dans les réponses, mais tester par soi-même et surtout COMPRENDRE comment travaille une fonction, surtout une fonction de domaine.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Futur Membre du Club
    Homme Profil pro
    gérant
    Inscrit en
    Mai 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : gérant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2022
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour

    excusez moi j'ai répondu au message précédent avant d'avoir vu le vôtre.

    Merci beaucoup pour votre réponse. Alors effectivement, ça rejoint ce que je lisais sur la lenteur des fonctions de domaine. Je vais me réorienter vers le regroupement.

    Voici une photo, je pense que si j'ai bien compris, je procède au regroupement via IDFACTURE dans une requête et une deuxième requête de regroupement via IDFACTURE & ETAGE pour avoir le même résultat que les deux SomDom




    Nom : ca.PNG
Affichages : 98
Taille : 65,0 Ko

  7. #7
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Bonjour,
    J'essaierais de faire une requete R1 chapeau qui calculerait PRESENCEMOIS du style :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DétailFacture.N° AS IDFACTURE, Conventions.N° AS IDCONTRAT, Logements.Etage AS ETAGE, Conventions.Date_in, Conventions.Date_out, DétailFacture.[Date début], DétailFacture.[Date fin], ddd([DétailFacture]![Date début],[DétailFacture]![Date fin],[Conventions]![Date_in],[Conventions]![Date_out]) AS PRESENCEMOIS
    FROM Occupants INNER JOIN ((Logements INNER JOIN Conventions ON Logements.N° = Conventions.logement.Value) INNER JOIN DétailFacture ON Logements.N° = DétailFacture.Logement.Value) ON Occupants.ID = Conventions.Occupants
    GROUP BY DétailFacture.N°, Conventions.N°, Logements.Etage, Conventions.Date_in, Conventions.Date_out, DétailFacture.[Date début], DétailFacture.[Date fin]
    HAVING (((DétailFacture.[Date début]) Is Not Null));
    ' voir à optimiser le GROUP¨BY
    puis une requete R2 qui calcule ensuite [Presence/Etage] et [Presence/Etage/Fac] à partir de R1

    mais sans doute que 2 requetes sans DSUM mais avec GROUP BY seraient plus rapides pour calculer [Presence/Etage] et [Presence/Etage/Fac]
    "Always look at the bright side of life." Monty Python.

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 926
    Points
    55 926
    Billets dans le blog
    131
    Par défaut
    @Belga16

    Citation Envoyé par Belga16 Voir le message
    Si SOMDOM n'est pas optimale, ce n'est pas la faute de SOMDOM[...]
    Bien sûr que si que c'est la faute de SOMDOM. Il suffit d'en comprendre le fonctionnement pour se rendre compte qu'elle ralentira de plus en plus le fonctionnement de l'application au fur et à mesure de l'augmentation du nombre de lignes. C'est une fonction "confort" mais qui relance la requête à chaque invocation. je n'ose même pas imaginer cela en réseau...

    Merci donc de bien maîtriser les notions sur lesquelles vous vous proposez de répondre.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Futur Membre du Club
    Homme Profil pro
    gérant
    Inscrit en
    Mai 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : gérant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2022
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    super merci pour vos réponses, ça me permet d'avancer !

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

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  2. Alternative au dbms_output ?
    Par dam1311 dans le forum Oracle
    Réponses: 10
    Dernier message: 24/11/2004, 08h11
  3. [xsl] alterner de style entre deux apply-template
    Par laouache dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 23/04/2004, 11h49
  4. Alternative(s) a CVS
    Par MrSimon dans le forum SCM
    Réponses: 3
    Dernier message: 06/03/2004, 11h37
  5. [FORMATION] Formations par alternance
    Par chobol dans le forum Etudes
    Réponses: 10
    Dernier message: 20/02/2004, 11h28

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