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 :

Jointure


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5
    Par défaut Jointure
    Bonjour,

    Je voudrai afficher une liste des codes et noms de tous les clients avec une colonne qui précise la dernière date à laquelle ils ont commandés (s'il n'y en a pas, cette colonne reste vide).

    Voici les tables en exemple :

    Table clients :
    cli_code / cli_nom
    1 / Bob
    2 / Toto
    3/ Lolo

    Table commandes :
    cmd_id / cmd_cli_code / cmd_date
    1 / 2 / 2001-01-20
    2 / 2 / 2004-02-09
    3 / 2 / 2005-07-30
    4 / 1 / 2002-04-22

    Je voudrai donc ce résultat :

    1 / Bob / 2002-04-22
    2 / Toto / 2005-07-30
    3 / Lolo / (rien)

    J'ai essayé :

    SELECT * FROM clients c LEFT JOIN commandes m ON c.cli_code = m.cmd_cli_code

    J'obtiens 5 lignes (les 3 clients dont le client 2 qui a 3 lignes puisque 3 commandes)

    Comment faire donc j'ai essayé avec DISTINCT cela ne marche pas si j'utilise un champ de la table 'commandes' dans la sélection !

    Merci de votre aide !

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Si ton moteur accepte ce genre de syntaxe (ORACLE par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT cli_code, cli_nom , laDate
    FROM Client c LEFT OUTER JOIN (SELECT cmd_cli_Code, MAX(cmd_Date) AS laDate 
                                   FROM Commandes 
                                   GROUP BY cmd_cli_code) a ON a.cmd_cli_Code = c.cli_Code

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5
    Par défaut Marche pas
    Citation Envoyé par Médiat
    Si ton moteur accepte ce genre de syntaxe (ORACLE par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT cli_code, cli_nom , laDate
    FROM Client c LEFT OUTER JOIN (SELECT cmd_cli_Code, MAX(cmd_Date) AS laDate 
                                   FROM Commandes 
                                   GROUP BY cmd_cli_code) a ON a.cmd_cli_Code = c.cli_Code
    Désolé ca ne marche pas sous mysql

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    D'où la règle du forum : indiquez votre SGBDR et sa version

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT cli_code, cli_nom , MAX(cmd_date)
    FROM Client c LEFT OUTER JOIN Commandes a ON a.cmd_cli_Code = c.cli_Code
    GROUP BY cli_code, cli_nom

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

Discussions similaires

  1. Jointure qui ne renvoie pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/07/2024, 09h33
  2. pb jointure texture
    Par dweis dans le forum DirectX
    Réponses: 2
    Dernier message: 24/06/2003, 13h33
  3. Jointures en SQL
    Par Guizz dans le forum Langage SQL
    Réponses: 10
    Dernier message: 04/06/2003, 12h21
  4. Réponses: 14
    Dernier message: 17/03/2003, 18h31
  5. Jointures INNER et jointures classiques ???
    Par UbiK dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/09/2002, 10h29

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