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 :

[MySQL] Requête & Jointure LEFT OUTER JOIN


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2003
    Messages : 87
    Points : 93
    Points
    93
    Par défaut [MySQL] Requête & Jointure LEFT OUTER JOIN
    Bonjour,

    Je dispose de ces deux tables :

    Calendrier
     datejour (timestamp)  
      10/01/2010 00:00:00  
      11/01/2010 00:00:00  
      12/01/2010 00:00:00  
    ...
      20/01/2010 00:00:00  
    Donnescarto
      datej (timestamp)  Montant (int)  
      10/01/2010 00:00:00  12  
      12/01/2010 00:00:00  11   
    ...
      20/01/2010 00:00:00  3  
    Vous noterez qu'il n'y a pas de ligne pour le 11 janvier.

    Je cherche à créer une requête qui me permettrait d'afficher tous les enregistrements de la table calendrier qui est complête (tous les jours de l'année) avec les éventuels enregistrements de la table donneescarto pour laquelle certaines données journalières n'existent pas (certains jours ne sont pas renseignés) et afficher un montant NULL à la place.

    ça devrait donc permettre d'afficher un résultat qui ressemble à ça :
     datejour (timestamp)   Montant (int)  
      10/01/2010 00:00:00   12  
      11/01/2010 00:00:00   11  
      12/01/2010 00:00:00   NULL  
    ...
      20/01/2010 00:00:00   3  
    J'ai essayé avec la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT c.datejour, d.Montant
      FROM calendrier c
           LEFT OUTER JOIN  donneesCarto d ON c.datejour = d.datej
     WHERE YEAR(c.datejour) = 2010
    Or, ma requête me retourne
     datejour (timestamp)   Montant (int)  
      10/01/2010 00:00:00   12  
      11/01/2010 00:00:00   11  
    ...
      20/01/2010 00:00:00   3  
    J'imagine que le problème vient de la jointure. Auriez vous une idée de ce qu'il faudrait changer pour que cela retourne ce que je recherche ?

    Par avance, merci de vos propositions.

    PS : J'ai simplifié à l'extrême la requête car il y a pas mal de champs calculés.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    A vue de nez la requête semble correcte. Est-ce que tu peux nous montrer la requête "non simplifiée" ?

    Tatayo.

  3. #3
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Il y a certainement une condition dans le WHERE portant sur la table jointe.

    => Faites porter toutes les conditions sur d dans la jointure.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Citation Envoyé par Rei Ichido Voir le message
    Il y a certainement une condition dans le WHERE portant sur la table jointe.

    => Faites porter toutes les conditions sur d dans la jointure.
    Je pencherais aussi pour ça
    Le Porc est un loup pour le Porc.

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2003
    Messages : 87
    Points : 93
    Points
    93
    Par défaut
    Merci de vos réponses, j'ai du me débrouiller autrement (sous-requête).

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

Discussions similaires

  1. Jointure left outer join incomplète
    Par nicoaix dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/09/2012, 17h18
  2. [AC-2003] Probleme jointure left outer join
    Par Ardiden31 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 11/04/2012, 08h47
  3. Aide sur une requête LINQ avec left outer join
    Par jbrasselet dans le forum Linq
    Réponses: 5
    Dernier message: 12/09/2011, 09h31
  4. Jointure LEFT OUTER JOIN , aide demandée :)
    Par fraginfo dans le forum Requêtes
    Réponses: 3
    Dernier message: 24/10/2006, 11h02
  5. Problème de jointure avec INNER JOIN et LEFT OUTER JOIN
    Par tonio-lille dans le forum Langage SQL
    Réponses: 4
    Dernier message: 10/02/2006, 12h45

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