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

ASP Discussion :

Affichage lignes SQL sans doublons


Sujet :

ASP

  1. #1
    Membre habitué Avatar de Aquellito
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    337
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 337
    Points : 150
    Points
    150
    Par défaut Affichage lignes SQL sans doublons
    Bonjour tout le monde,

    Je reviens tout juste du forum SQL où on m'a suggérer de poster ici où je devrais trouver plus de réponses.

    http://www.developpez.net/forums/d70...s/#post4132228

    Pour résumer, j'ai un trombinoscope qui a la particularité de pouvoir donner plusieurs fonctions par collaborateur. Le résultat de la requête SQL donne les lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Paul / technicien / Agence nord
    Paul / responsable / Agence nord
    Paul / responsable / Agence sud
    Ma question, c'est comment afficher cet enregistrement sans répéter le nom 3 fois ?

    Merki.

  2. #2
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Salut,

    Apparement, il y a plusieurs champs qui ne devraient pas etre répétés: le nom et la fonction.
    C'est un peu ennuyeux. Une solution est de comparer la valeur des champs à chaque tour de boucle. Si la nouvelle valeur est égale à la valeur du tour précédent on ne l'affiche pas. Cela oblige à stocker les valeur précédentes. De plus la comparaison est un peu difficile à gérer.
    Une autre solution est la récurcivité: http://www.developpez.net/forums/m3038074-8/
    Encore une solution est de faire plusieurs interrogations de la base de données. Tu récupères d'abords un recordset avec juste les individus. Pour chaque individu, tu demandes les fonctions qu'il occupe, pour chaque fonction la localisation, etc. C'est le plus facile mais ce qui sollicite le plus la base de données.

    Qu'est-ce qui te semble le plus faisable?

    A+

  3. #3
    Membre habitué Avatar de Aquellito
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    337
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 337
    Points : 150
    Points
    150
    Par défaut
    Bonjour Immobilis,

    Je suis en train de regarder ta méthode de la récursivité. Et bon je mets un peu de temps à comprendre surtout que je ne connais pas trop la synthaxe du VB.
    Le fait de faire plusieurs interrogation de la base, c'est ce que je fais actuellement. Je cherchais justement une méthode de substitution en SQL pour une execution plus rapide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    var RS_collaborateur = Server.CreateObject("ADODB.RecordSet");
    var RS_collaboration = Server.CreateObject("ADODB.RecordSet");
    var RS_fonction = Server.CreateObject("ADODB.RecordSet");
    var RS_agence = Server.CreateObject("ADODB.RecordSet");
     
    var req = "SELECT nom FROM collaborateur";
    RS_collaborateur.Open(req,conn,3,1);
     
    while (!RS_collaborateur.EOF)
    {
    	Response.Write("<strong>"+RS_collaborateur("nom")+" :</strong><br />");
     
    	req = "SELECT * FROM collaboration WHERE (id_collaborateur='"+RS_collaborateur("id")+"')";
    	RS_collaboration.Open(req,conn,3,1);
     
    	while (!RS_collaboration.EOF)
    	{
    		req = "SELECT nom_fonction FROM fonction WHERE (id='"+RS_collaboration("id_fonction")+"')";
    		RS_fonction.Open(req,conn,3,1);
    		Response.Write(RS_fonction("nom_fonction")+"&nbsp;-&gt;&nbsp;");
    		RS_fonction.Close;
     
    		req = "SELECT nom_agence FROM agence WHERE (id='"+RS_collaboration("id_agence")+"')";
    		RS_agence.Open(req,conn,3,1);
    		Response.Write(RS_agence("nom_agence")+"<br />");
    		RS_agence.Close;
     
    		RS_collaboration.MoveNext;
    	}
    	RS_collaboration.Close;
            RS_collaborateur.MoveNext;
            Response.Write("<br /><br />");
    }
    RS_collaborateur.Close;
    Bon, j'essaye de décortiqué ta méthode et je te tiens au courant.

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

Discussions similaires

  1. Requete SELECT SQL sans doublon
    Par arnaud_76 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 17/11/2014, 07h01
  2. Req SQL sans doublons
    Par ahmedbassou dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 29/07/2011, 15h36
  3. affichage ligne colonne sans valeur bo 6.5
    Par gwena2b dans le forum Débuter
    Réponses: 4
    Dernier message: 14/12/2009, 13h08
  4. [SQL] Affichage des resultats sans doublons
    Par Luverger dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/08/2007, 14h28
  5. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 15h56

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