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 :

Probleme dans une requête


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2006
    Messages : 307
    Points : 114
    Points
    114
    Par défaut Probleme dans une requête
    Salut,

    J'ai un petit souci avec une requete / Voici mes tables :
    CLIENT : NoClient, NomCLient, NoAchat
    ACHAT : NoAchat, NoProduit
    PRODUIT : NoProduit, NomProduit

    Un client peut acheter 0,N produits.

    Je souhaiterai avoir la liste des clients COMPLETE avec les produits achetés.

    Toto - Table
    Mario - Chaise
    Toto - Chaise
    ...
    Pour cela, pas de souci...

    Le souci est que je souhaite afficher aussi dans ma requête les clients n'ayant rien acheté et en laissant null le deuxieme champs (dans ce cas, Titi n'a rien acheté)
    Je sais aussi que NoAchat de la table Client ne figure pas automatiquement dans la table Achat :

    Toto - Table
    Mario - Chaise
    Toto - Chaise
    Titi - null
    ...
    Est ce que qq'un a une idée ?

    Merci d'avance...

    Mario

  2. #2
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Points : 71
    Points
    71
    Par défaut
    moi je te proposerais un UNION

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT a.NomClient, b.NomProduit 
    FROM CLIENT a, PRODUIT b, ACHAT c
    WHERE a.NoClient = c.NoClient
    AND b.NoProduit = c.NoProduit
    Union
    SELECT a.NomClient, 'Null'
    FROM CLIENT a
    WHERE NOT EXISTS (
    SELECT 'Y'
    FROM ACHAT c
    WHERE a.NoClient = c.NoClient
    )

  3. #3
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2006
    Messages : 307
    Points : 114
    Points
    114
    Par défaut
    Ton union me convient tres bien...

    Merci bien...

  4. #4
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2006
    Messages : 307
    Points : 114
    Points
    114
    Par défaut
    Apres qques reflexions, ne serait t-il pas conseillé d'utiliser un LEFT JOIN au lieu d'un WHERE dans ce cas avec comme base la table CLIENT ?

    Si je compare
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT a.NomClient, b.NomProduit 
    FROM CLIENT a, PRODUIT b, ACHAT c
    WHERE a.NoClient = c.NoClient
    AND b.NoProduit = c.NoProduit
    Union
    SELECT a.NomClient, ''
    FROM CLIENT a
    WHERE NOT EXISTS (
    SELECT 'Y'
    FROM ACHAT c
    WHERE a.NoClient = c.NoClient
    )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT a.NomClient, b.NomProduit
    FROM CLIENT a
    LEFT JOIN ACHAT c ON a.NoClient = c.NoClient
    LEFT JOIN PRODUIT b ON b.NoProduit = c.NoProduit

    Est ce que ces 2 requetes seraient identiques ?

    Est il possible de rajouter une quatrieme table (puis une cinquieme qui a un lien avec la 4eme) qui donne uniquement des infos sur le client ? Si oui, de quel maniere ?

    Merci pour vos precisions...

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

Discussions similaires

  1. Probleme dans une requête
    Par bertie312 dans le forum Access
    Réponses: 5
    Dernier message: 04/07/2013, 16h52
  2. [SQL] Probleme de TOP dans une requête
    Par boutts dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/05/2006, 10h49
  3. Probleme de Jointures imbriquées dans une requête
    Par Crevin dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/04/2005, 11h05
  4. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

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