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

Langage SQL Discussion :

[SQL SERVER] Ne pas afficher des données en double dans une requete avec jointure


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 37
    Points
    37
    Par défaut [SQL SERVER] Ne pas afficher des données en double dans une requete avec jointure
    Bonjour,

    Est ce qu'il est possible dans une requête avec jointure affichant plusieurs lignes, de ne pas afficher les données en double?

    Exemple:

    J'ai 3 tables :
    - une table employe
    - une table competence
    - une table affectation_competence

    J'aimerai afficher dans une requête, toutes les compétences de tous les employés:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Nom, Competence
    FROM Employe, Competence, Affectation_Competence
    WHERE Employe.ID_Employe = Affectation_Competence.ID_Employe
    AND Affectation_Competence.ID_Competence =  Competence.ID_Competence
    Résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Nom  - Competence
    -----------------
    Toto - Access
    Toto - Java
    Toto - Delphi
    Tutu - Access
    Tutu - Php
    Ce que j'aimerai c'est afficher ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Nom  - Competence
    -----------------
    Toto - Access
         - Java
         - Delphi
    Tutu - Access
         - Php
    Le nom ne s'affiche qu'une seule fois, s'il est en double il est remplacé par un espace vide.

    Est ce que c'est faisable sans avoir à passer par une procédure stockée?
    Merci d'avance pour votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 52
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    Oui tu peux le faire sans passer par des procédures.

    Exemple avec du SQL Server 2005
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT  
    		CASE  
    		WHEN Rownum =1 then Nom	
    		END Nom, 
    		Competence
    FROM 
    (
    	SELECT Nom, Competence , row_number() OVER (PARTITION BY Nom  Order by  Nom, Competence) Rownum
    	FROM Employe, Competence, Affectation_Competence
    	WHERE Employe.ID_Employe = Affectation_Competence.ID_Employe
    	AND Affectation_Competence.ID_Competence =  Competence.ID_Competence
    ) TbListing
    Je n'ai pas créer les tables.
    Mais la requête doit être correcte.

    @+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    Aie je pensais pas que ça serait si compliqué car en réalité j'ai une cinquantaine de champs à lister... Et avec une procédure stockée ça serait plus simple à faire?

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 104
    Points : 28 400
    Points
    28 400
    Par défaut
    En effet, ce n'est pas simple, mais c'est du cosmétique, pour faire joli. C'est à l'application de s'occuper de cette mise en forme des données, pas au SGBD. Le boulot du SGBD, c'est de mettre à jour et retrouver rapidement les données, pas de faire des jolies listes...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    En fait vu que je passe par access je suis plutot limité, il y a pas de composant tableau donc je dois passer par un sous formulaire basé sur une requête

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Citation Envoyé par al1_24
    En effet, ce n'est pas simple, mais c'est du cosmétique, pour faire joli. C'est à l'application de s'occuper de cette mise en forme des données, pas au SGBD. Le boulot du SGBD, c'est de mettre à jour et retrouver rapidement les données, pas de faire des jolies listes...
    +1

Discussions similaires

  1. SQL Server Compact et sauvegarde des données
    Par angelevil dans le forum Accès aux données
    Réponses: 1
    Dernier message: 31/03/2008, 22h02
  2. [SQL Server 2005 [Express]] récupérer des données
    Par le_ben dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/08/2007, 17h11
  3. [MS SQL server express 2005] exportation des données
    Par backfire dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/02/2007, 15h58
  4. Réponses: 2
    Dernier message: 14/06/2006, 08h53
  5. [SQL Server Management Express] Sauvegarde des données
    Par basnifo dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 02/06/2006, 09h49

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