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 :

recordset database bloating [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut recordset database bloating
    Bonjour, je vous expose mon problème en espérant que vous puissiez m'apporter des pistes pour le résoudre.

    A partir d'une table de ce type :

    PRENOM(TEXT) NOM(TEXT)
    Jean A
    Jean B
    Martin A
    Martin C
    Martin D

    Je voudrais arriver à ceci :
    PRENOM NOM_1 NOM_2 NOM_3
    Jean A B
    Martin A C D


    Ma première approche a été de programmer en VBA un algorithme avec pas mal de manipulation de données... Il est fonctionnel, mais je suis quasi-certain qu'il existe une meilleure solution.

    J'ai ensuite trouvé une fonction SQL : TRANSFORM, qui m'a l'air d'être une meilleure approche.
    Cependant, il me manque une colonne dans la table principale.

    Je pense que je dois rajouter une 3e colonne à la table pour qu'elle ressemble à celle-ci :
    PRENOM(TEXT) NOM(TEXT) N°_NOM
    Jean A NOM_1
    Jean B NOM_2
    Martin A NOM_1
    Martin C NOM_2
    Martin D NOM_3

    J'ai donc ajouté cette 3e colonne avec un algorithme en utilisant un recordset, mais le problème, c'est que ma table possède 700k+ enregistrements, et que l'algorithme plante en cours de route car ma database dépasse les 2Gb à cause de l'ajout de cette colonne.

    Je voudrais donc savoir s'il existe un moyen de résoudre ce problème ou s'il existe une autre approche pour y répondre.

    Merci de votre aide.

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 619
    Points : 56 854
    Points
    56 854
    Billets dans le blog
    40
    Par défaut
    Bonsoir,

    Citation Envoyé par Elendawyn Voir le message
    Je pense que je dois rajouter une 3e colonne à la table
    On peut toujours calculer cette colonne (voir un exemple ici), mais on risque quand même le dépassement de capacité ou le pédalage de la requête dans la semoule...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci f-leb, grâce à votre suggestion, j'ai finalement réussi à trouver une requête SQL qui fait exactement ce que je cherche. Plus besoin de recordset :p

    Contact = Prénom et Clients = Nom dans mon cas

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT T1.contacts, T1.clients, Count(T2.contacts) AS Enum
    FROM [contacts_qry] AS T1 INNER JOIN [contacts_qry] AS T2
    ON T1.clients=T2.clients And T1.contacts<=T2.contacts
    GROUP BY T1.clients,T1.contacts
    ORDER BY T1.clients,T1.contacts DESC;

    Maintenant, il ne me reste plus qu'à comprendre comment il fonctionne :p

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

Discussions similaires

  1. Redhat-9 changer le path des databases
    Par jean christophe dans le forum Installation
    Réponses: 7
    Dernier message: 30/05/2003, 17h53
  2. [VB6] Sauvegarder la position dans un Recordset
    Par inotna2099 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 29/04/2003, 17h35
  3. [VB6] [BDD] Recordset et champ égal à Null
    Par Gr|ppen dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/03/2003, 10h00
  4. [ADO] Sauvegarde / lecture de recordset
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/09/2002, 16h54
  5. Tutoriels et liens pour le Borland Database Engine
    Par Community Management dans le forum Paradox
    Réponses: 0
    Dernier message: 25/03/2002, 10h23

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