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

MS SQL Server Discussion :

Problème jointure SQL Server


Sujet :

MS SQL Server

  1. #1
    Membre éprouvé Avatar de tfc3146
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2009
    Messages : 79
    Par défaut Problème jointure SQL Server
    Bonjour, je cherche à afficher uniquemement dans ma table de dimenions les lignes qui ont des COD_NAT répartis sur des COD_CHA différents.
    Ensutie, je veux jointer sur ma table de faits sur ces deux attributs pour ressortir les COD_SOC qui leurs sont rattachées.

    PS : la première requête passe, c'est à partir du JOIN que SQL Server "gueule"
    Pourquoi cette requête ne passe pas sous SQL Server ? Je me doute que c'est à cause de ma sous requête au dessus, mais pour l'instant je ne vois pas comment faire autrement. Une idée ?
    Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT D1.*,F.COD_CHA
    FROM MatabDim D1
     WHERE EXISTS ( SELECT D2.*
    		FROM MatabDim D2
    		WHERE D1.COD_NAT=D2.COD_NAT
    		AND D1.COD_CHA<>D2.COD_CHA )
    JOIN MaTabFaits F ON F.COD_NAT=D1.COD_NAT 
    WHERE F.COD_CHA=D1.COD_CHA

  2. #2
    Membre éprouvé Avatar de tfc3146
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2009
    Messages : 79
    Par défaut
    C'est souvent 30s après avoir posté que l'on trouve la réponse.

    Je mets quand même la requête, ça peut aider d'autres personnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT DISTINCT D1.COD_CHA,D1.COD_NAT, F.COD_SOC
    FROM Dimension D1
    JOIN Faits F ON F.COD_NAT=D1.COD_NAT AND F.COD_CHA=D1.COD_CHA	
    WHERE EXISTS (   SELECT D2.*
    	             FROM DimensionD2
    	             WHERE D1.COD_NAT=D2.COD_NAT
    		AND D1.COD_CHA<>D2.COD_CHA )
    ORDER BY D1.COD_NAT

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Effectivement la première requête est syntaxiquement incorrecte.
    L'ordre d'écriture d'une requête SQL est toujours :

    1. SELECT / INSERT / UPDATE / DELETE
    2. FROM / JOIN / APPLY
    3. WHERE / AND / OR
    4. GROUP BY / HAVING
    5. ORDER BY

    L'INSERT est un peu un cas particulier mais le squelette est là

    On peut aussi écrire la requête comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT		DISTINCT D1.COD_CHA
    		, D1.COD_NAT
    		, F.COD_SOC
    FROM		dbo.Dimension AS D1
    INNER JOIN	dbo.Faits AS F
    			ON F.COD_NAT = D1.COD_NAT
    			AND F.COD_CHA = D1.COD_CHA
    INNER JOIN	dbo.Dimension AS D2
    			ON D1.COD_NAT = D2.COD_NAT
    			AND D1.COD_CHA <> D2.COD_CHA
    ORDER BY	D1.COD_NAT
    @++

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

Discussions similaires

  1. Problème Trigger SQL Server
    Par RodEpsi dans le forum Développement
    Réponses: 6
    Dernier message: 25/05/2006, 16h03
  2. Problème installation SQL server express
    Par Guennec.Yannick dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 22/03/2006, 20h26
  3. Problème Curseur SQL SERVER
    Par Yanmeunier dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/12/2005, 20h19
  4. Problème installation SQL Server 2000 (programme antérieur)
    Par 404Found dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/04/2005, 11h24
  5. Problème réplication SQL Server et SQL Server CE (RDA)
    Par didix11 dans le forum Réplications
    Réponses: 2
    Dernier message: 15/04/2004, 12h10

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