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 :

Problème de jointure


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 272
    Par défaut Problème de jointure
    Bonjour,

    J'ai une question bête comme la lune (j'dois pas être bien moi ce matin, j'arrive plus à penser)

    J'ai une requête qui regroupe des quantités commandées par article et par semaine!

    Art1 semaine1 quantité
    Art1 semaine3 quantité
    Art1 semaine34 quantité
    Art2 semaine2 quantité
    Art2 semaine6 quantité
    Art2 semaine41 quantité

    J'ai également une table calendrier qui me liste les semaines de l'année

    Année Semaine1 ...
    Année Semaine2 ...
    Année Semaine3 ...
    Année Semaine4 ...
    ...
    Année Semaine52 ...
    (Année Semaine53 ...)

    Et ce que j'aimerais faire , c'est une requête toute simple qui me liste mes quantité mais pour toutes les semaines de mon calendrier (y compris les semaines qui n'existent pas dans ma requête et non pas uniquement les semaines pour lesquelles j'ai des quantités commandées). J'espère que c'est environ compréhensible.

    C'est surement bête, genre une question de jointure ou je ne sais quoi mais je me galère! Voici ma requête finale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT     TOP (100) PERCENT dbo.rq_OOEP_OBJ_cmde_12_mois.art_cod, dbo.tb_ooep_calendrier_annuel.cal_semaine, 
                          dbo.rq_OOEP_OBJ_cmde_12_mois.cad_deldem, SUM(DISTINCT dbo.rq_OOEP_OBJ_cmde_12_mois.qte_cmde) AS Expr1
    FROM         dbo.rq_OOEP_OBJ_cmde_12_mois INNER JOIN
                          dbo.tb_ooep_calendrier_annuel ON dbo.rq_OOEP_OBJ_cmde_12_mois.cad_deldem = dbo.tb_ooep_calendrier_annuel.cal_semaine
    GROUP BY dbo.rq_OOEP_OBJ_cmde_12_mois.art_cod, dbo.tb_ooep_calendrier_annuel.cal_semaine, dbo.rq_OOEP_OBJ_cmde_12_mois.cad_deldem
    HAVING      (dbo.tb_ooep_calendrier_annuel.cal_semaine > CONVERT(int, dbo.fct_isoweek(GETDATE())) - 101) AND 
                          (dbo.tb_ooep_calendrier_annuel.cal_semaine < CONVERT(int, dbo.fct_isoweek(GETDATE())))
    ORDER BY dbo.rq_OOEP_OBJ_cmde_12_mois.art_cod, dbo.rq_OOEP_OBJ_cmde_12_mois.cad_deldem
    Pouvez-vous me donner l'astuce?

    Merci bien

    Julius

  2. #2
    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,

    Remplacez l'INNER JOIN par un RIGHT JOIN

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 272
    Par défaut
    Bonjour elsuket,

    heu j'ai bien remplacé le INNER JOIN par un RIGHT OUTER JOIN mais le résultat est strictement identique. Ma requête ne me renvoie que les semaines pour lesquelles une quantité existe!!!

    Auriez-vous une autre soluce?

  4. #4
    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
    Je ne comprends pas pourquoi mais c'est Lundi

    Avez-vous essayé avez LEFT OUTER JOIN ?

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 33
    Par défaut
    salut
    Essayer ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT  TOP (100) PERCENT dbo.rq_OOEP_OBJ_cmde_12_mois.art_cod, dbo.tb_ooep_calendrier_annuel.cal_semaine, 
                          dbo.rq_OOEP_OBJ_cmde_12_mois.cad_deldem, SUM(DISTINCT dbo.rq_OOEP_OBJ_cmde_12_mois.qte_cmde) AS Expr1
    FROM         dbo.rq_OOEP_OBJ_cmde_12_mois 
    LEFT JOIN  dbo.tb_ooep_calendrier_annuel ON dbo.rq_OOEP_OBJ_cmde_12_mois.cad_deldem = dbo.tb_ooep_calendrier_annuel.cal_semaine
    GROUP BY dbo.rq_OOEP_OBJ_cmde_12_mois.art_cod, dbo.tb_ooep_calendrier_annuel.cal_semaine, dbo.rq_OOEP_OBJ_cmde_12_mois.cad_deldem
    HAVING     ( (dbo.tb_ooep_calendrier_annuel.cal_semaine > CONVERT(int, dbo.fct_isoweek(GETDATE())) - 101) AND 
                          (dbo.tb_ooep_calendrier_annuel.cal_semaine < CONVERT(int, dbo.fct_isoweek(GETDATE()))
    		) OR dbo.tb_ooep_calendrier_annuel.cal_semaine IS NULL
    ORDER BY dbo.rq_OOEP_OBJ_cmde_12_mois.art_cod, dbo.rq_OOEP_OBJ_cmde_12_mois.cad_deldem

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 272
    Par défaut
    Bonjour bonjour,

    Alors oui j'ai essayé avec un LEFT OUTER JOIN mais même combat! Que puic. Et oui le lundi c'est vraiment pas un jour comme les autres... c'est rageant! Mais je dois dire que le mardi lui ressemble drôlement (en tout cas celui là).

    SAHARBI, merci pour ta solution mais je suis contraint de te dire que j'obtiens tjs et encore le même résultat!

    ça me désole de devoir vous dire que ça ne marche pas, vous vous donnez déjà bcp de mal... c'est ballo! Enfin voilou je vous remercie tout de même un gros peu!

    Sinon pour chenis je crois que je vais attaquer le problème depuis un autre côté!

    Je pense que je vais d'un côté récupérer mes no de semaine depuis mon calendrier, et de l'autre la liste des articles depuis ma table d'article. Je ferai ensuite un "produit cartésien" de ces derniers pour obtenir la liste de tous mes articles avec pour chaque article la liste complète des semaines.

    Je pourrai alors aller chercher mes quantités et on verra bien si le résultat change. Mais bon je comprends pas pourquoi vos soluces ne fonctionnent pas...

    Je vous tiens au jus de la suite des événements.

    Julius

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

Discussions similaires

  1. Problème de jointure de tables
    Par AurelBUD dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/04/2005, 16h27
  2. Probléme de jointure
    Par Ajrarn dans le forum Langage SQL
    Réponses: 14
    Dernier message: 24/02/2005, 14h57
  3. Vraisemblable problème de jointure
    Par pimousse76 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/02/2005, 15h34
  4. [MS Access] Problème de jointure
    Par Erakis dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/02/2005, 21h15
  5. Problème de jointure ?!
    Par ebaynaud dans le forum Langage SQL
    Réponses: 8
    Dernier message: 03/11/2004, 11h27

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