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

Développement SQL Server Discussion :

Question sur les INNER JOIN


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Par défaut Question sur les INNER JOIN
    Bonjour

    voici mes tables et données d'exemple :
    Member : No_Membr, Nom
    10,Jack
    20,Jo
    30,Janna
    40,Black
    
    Game : No_Membr,No_Advers,PointageMembr,PointageAdvers
    10,20,6,5
    10,30,5,4
    30,10,2,3
    J'aimerais arriver a ce resultat avec une SELECT


    Nom1,Nom2,PointageMembr,PointageAdvers
    Jack,Jo,6,5
    Jack,Janne,5,4
    Janna,Jack,2,3

    voici la requete que j'ai tenter d'utiliser mais sans success j'obtiens des doublons Jack,Jo et Jo,Jack par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT 
    	A.Prenom AS "Prenom1",
    	A.Nom AS "Nom1",
    	PS.PointageMembr,
    	PS.PointageAdvers,
    	B.Prenom AS "Prenom2",
    	B.Nom AS "Nom2"
    FROM Parties_Simple PS
    	INNER JOIN Membres A ON PS.No_Membr = A.No_Membr
    	INNER JOIN Membres B ON PS.No_Advers =  B.No_Membr
    WHERE PS.PointageMembr + PS.PointageAdvers >  0
    Merci !!

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    Tu obtiens un doublon parce que tu l'as dans ta base, sinon la requete semble bonne :

    10,30,5,4
    30,10,2,3

  3. #3
    Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Par défaut Precision
    tu as raison j'avais des doublons dans la BD . Par contre j'aimerais obtenir une seule fois chaque partie . Donc j'aimerais que Dm_Partie soit unique dans le resultat de la requete . J'ai essayer de faire un GROUP BY Dm_Partie , mais j'obtiens toujours que des colonne ne font pas partis d'aggregate .
    Comment obtenir une partie unique...

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT 
    	PS.Calibre AS "Calibre",
    	A.Prenom AS "Prenom1",
    	A.Nom AS "Nom1",
    	PS.PointageMembr,
    	PS.PointageAdvers,
    	B.Prenom AS "Prenom2",
    	B.Nom AS "Nom2",
    	PS.Dm_Partie
    FROM Parties_Simple PS
    	INNER JOIN Membres A ON PS.No_Membr = A.No_Membr
    	INNER JOIN Membres B ON PS.No_Advers =  B.No_Membr
    	WHERE PS.PointageMembr + PS.PointageAdvers >  0
    ORDER BY PS.Dm_Partie DESC
    Calibre	Prenom1	Nom1	PointageMembr	PointageAdvers	Prenom2	Nom2	Dm_Partie
    B+	Bernard	Frig	3	6	Stéphane	Turc	2011-08-25 21:32:54.000
    B+	Stéphane	Turc	6	3	Bernard	Frig	2011-08-25 21:32:54.000
    C	Stephane	Gon	9	5	Marielle	Ch	2011-08-25 20:08:53.000
    C	Stephane	Gon	9	5	Marielle	Ch	2011-08-25 20:08:53.000
    C	Marielle	Ch	5	9	Stephane	Gon	2011-08-25 20:08:53.000
    C	Marielle	Ch	5	9	Stephane	Gon	2011-08-25 20:08:53.000
    j'aimerais avoir ceci
    Calibre	Prenom1	Nom1	PointageMembr	PointageAdvers	Prenom2	Nom2	Dm_Partie
    B+	Bernard	Frig	3	6	Stéphane	Turc	2011-08-25 21:32:54.000
    C	Stephane	Gon	9	5	Marielle	Ch	2011-08-25 20:08:53.000

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    Ben là, la question a se poser c'est pourquoi tu as des doublons dans ta base.

    Soit tu as un problème de conception, de ta base, du logiciel qui enregistre les données, des deux, etc, soit ce ne sont pas des doublons au sens des données elles-mêmes.

    Si il est légitime que tu es des doublons, il faut savoir ensuite quel élément du doublon tu vas utiliser et lequel tu vas ignorer, ou alors si tu veux les grouper quel information tu va agréger pour les regrouper. Tu cumule les scores ou tu en fait la moyenne? Tu prend le plus récent, le moins récent ? Etc...

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2011
    Messages : 17
    Par défaut Bonjour à tous
    Je suis de l'avis de Sevyc64, il semble y avoir des questions à se poser sur la façon de renseigner la table des résultats.
    Cependant, dans l'hypothèse où Frank12 n'aurait pas la possibilité d'intervenir en amont, la seule solution semble de faire la distinction sur la date, c'est le seul champ qui semble être commun aux doublons. En revanche il faut être sûr qu'on n'ait pas plusieurs parties qui commencent en même temps.

    Personnellement, je modifierais le type du champ Dm_Partie pour avoir une précision à la milliseconde et j'utiliserais la requête suivante pour éliminer les doublons:



    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
     
     
    WITH RESULTAT_NUMEROTE AS
    (
    	SELECT
    		ROW_NUMBER() OVER (PARTITION BY PS.Dm_Partie ORDER BY A.Nom) AS Numero,
    		PS.Calibre AS "Calibre",
    		A.Prenom AS "Prenom1",
    		A.Nom AS "Nom1",
    		PS.PointageMembr,
    		PS.PointageAdvers,
    		B.Prenom AS "Prenom2",
    		B.Nom AS "Nom2",
    		PS.Dm_Partie
    	FROM
    		Parties_Simple PS
    		INNER JOIN Membres AS A ON PS.No_Membr=A.No_Membr
    		INNER JOIN Membres AS B ON PS.No_Advers=B.No_Membr
    	WHERE
    		PS.PointageMembr + PS.PointageAdvers>0
    )
     
    SELECT
    	Calibre, Prenom1, Nom1, PointageMembr, PointageAdvers, Prenom2, Nom2, Dm_Partie
    FROM
    	RESULTAT_NUMEROTE
    WHERE
    	Numero=1
    ORDER BY
    	Dm_Partie DESC
    Mais ce n'est pas très propre, il serait préférable d'éliminer les doublons à la source comme l'a expliqué Sevyc64

    Hope it will help

  6. #6
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    Dans les exemples donnés, tout est identique, même la date.

    Soit toute la structure de la table n'est pas données et il y a réellement des champs qui permettent de faire la différence, et ce n'est pas des doublons dans la table,

    Soit c'est de vrai des doublons, cela signifie que la table en question n'a pas de clé primaire chose qui ne devrait jamais être fait en base relationnelle.

    Le problème qui se pose aussi, c'est, si ces données sont liées à d'autres données dans d'autres table. Dans le cas de doublon, quelle ligne retenir pour faire le lien ?

Discussions similaires

  1. [2.3] Question sur les Join Data Set
    Par scariou29 dans le forum BIRT
    Réponses: 2
    Dernier message: 06/10/2008, 12h34
  2. question sur les vertex buffer et index buffer
    Par airseb dans le forum DirectX
    Réponses: 9
    Dernier message: 25/08/2003, 02h38
  3. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59
  4. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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