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 :

De plusieurs lignes en un seul champ en SQL ?


Sujet :

Requêtes et SQL.

  1. #1
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 371
    Points : 23 845
    Points
    23 845
    Par défaut De plusieurs lignes en un seul champ en SQL ?
    Bonjour à tous et merci de votre temps et de votre aide.

    J'ai une appli où j'ai une liste de logiciels associés à un ordinateur.

    Je présente une liste de mes machines (mode feuille de données) et pour chaque machine la liste des logiciels concaténée dans un seul champ (Logiciels : Word, Excel, Access).

    Le nombre de logiciels par machine est variable.

    Actuellement je fais la concaténation en VBA mais c'est d'une lenteur effroyable.

    Y a t'il un moyen d'obtenir le même résultat mais en SQL ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 666
    Points : 34 374
    Points
    34 374
    Par défaut
    salut,
    tu parles de cette version là ?
    http://access.developpez.com/sources...QLLigneColonne

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 371
    Points : 23 845
    Points
    23 845
    Par défaut
    Non mais de quelque chose d'approchant, j'ai écrit le code moi même.

    J'ai envisagé plusieurs scénarios :

    1) Optimisation du VBA
    2) Utilisation d'une table intermédiaire

    mais je pense que 100% SQL sera le plus efficace si c'est possible.

    A+

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    En fait si t'es partie sur la même base que moi, (celle que j'ai écris dans les pages sources) en fait ça va pas Faudrait que je corrige

    Pourquoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT Tbl_projet.Projet, Recupparticipant(Projet) AS LesParticipants
    FROM Tbl_projet;
    Je calcule plusieurs fois la même concaténation pour en prendre seulement le distinct. Trop de calculs inutiles

    Il faut plutot faire l'inverse.

    Générer la liste des ID et pour chaque ID créer la concaténation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT ID, Recupparticipant(Projet) AS LesParticipants
    FROM (SELECT DISTINCT Tbl_projet.Projet FROM Tbl_projet);
    Et là, ça va être beaucoup beaucoup plus rapide

    Mais si tu es déjà sous cette forme là, ben je ne sais pas quoi faire de plus, si ce n'est indexer les champs

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 371
    Points : 23 845
    Points
    23 845
    Par défaut
    Merci Tofalu, mon point était d'éliminer complètement le VBA de la solution.

    J'ai finalement décidé de faire une table intermédiaire qui garde le résultat calculé et d'afficher à partir de cette table.

    Je fais peu de modifications ce qui fait que le coût du recalcul à chaque changement est minime.

    A+

  6. #6
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut marot_r, Tofalu, jpcheck,

    en requete uniquement je vois plusieurs solutions:
    >faire la concaténation par fonction de domaine
    >dispatcher les enregistrements dans des champs en utilisant l'union et en faire la concaténation

    mais c'est restrictif sur le nombre de champ et une table intermédiaire est très souvent plus rapide.

Discussions similaires

  1. "concaténer" plusieurs lignes dans un seul champ
    Par djobert dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/12/2008, 19h00
  2. Concaténer les champs de plusieurs lignes en un seul
    Par gvdmoort dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 07/09/2007, 13h01
  3. [MySQL] Remplir plusieurs lignes d'une seule table avec le même formulaire
    Par zehni dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/09/2006, 13h12
  4. Réponses: 1
    Dernier message: 26/04/2006, 10h52
  5. Concatenation de plusieurs lignes en une seule
    Par stawen dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2005, 14h55

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