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

Requêtes MySQL Discussion :

Faire une requête pour 1 pays et le reste du monde


Sujet :

Requêtes MySQL

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut Faire une requête pour 1 pays et le reste du monde
    J'ai 4 tables :
    -> clients
    - id_client
    - raison_sociale
    - id_pays

    -> produits
    - id_produit

    -> commandes
    - id_commande
    - id_client
    - id_produit

    -> prestataires-produits
    - id_prestataire
    - id_produit
    - id_pays


    Les prestataires s'occupe de la livraison des produits en fonction du pays du client. Un même prestataire peut couvrir plusieurs pays. Le prestataire français couvre le reste du monde s'il n'y a pas de prestataire spécifique dans le pays du client.

    Lorsque je fais la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM commandes
    LEFT OUTER clients USING(id_client)
    LEFT OUTER JOIN prestataires USING(id_produit)
    WHERE clients.id_pays = prestataires.id_pays
    Je vais bien avoir que les produits du prestataire pour un pays donné.

    Mais je n'ai pas le prestataire qui fait tous les pays restant.

    Exemple : J'ai un produit "Café". Dans le monde entier, il est livré par le prestataire français. Sauf en Belgique où il est livré par un prestataire belge.
    Dans ma table prestataires_produits j'ai :

    Pour la belgique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    id_prestataire = 1
    id_produit = 1
    id_pays = 7
    Pour le reste du monde
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    id_prestataire = 1
    id_produit = 1
    id_pays = 0
    Ma requete pour la belgique va fonctionner, mais elle ne fonctionnera pas pour le reste du monde.

    Puis-je faire une seule requete qui me regroupe par prestataire/pays la liste des clients/produits à livrer ou dois-je faire plusieurs requetes ?

    Merci d'avance.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  2. #2
    Membre régulier Avatar de Macfurp
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    sous reserve, je ne suis pas sur de comprendre complètement le besoin, qu'est-ce qui t'empécherai (sauf peut être un problème de perf ) de retirer la clause WHERE pour ne conserver que les jointures ?

    Sinon pourquoi emploies-tu des Left Outer Join, les lignes présentes en Table commandes contiennent forcemment des CLients et des produits présents dans leurs tables respectives... ?

  3. #3
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Bonjour Macfurp,

    Je vais essayer d'être plus clair.

    Le prestataire A couvre la Belgique et a le code pays 7
    Le prestataire B couvre la france et a le code pays 1

    Le client C1 s'il a le code pays 7 doit avoir le prestataire A
    Le client C2 s'il a le code pays 3 doit avoir le prestataire B

    Si je retire le Where, je ne vois pas comment je peux écrire ma requête.

    Quant au jointure, si je les supprime, je devrai faire un where.

    Je ne suis pas au top de MySql peut-être et je l'admet.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

Discussions similaires

  1. Besoin d'aide pour faire une requête
    Par Gau28 dans le forum Requêtes
    Réponses: 6
    Dernier message: 12/09/2009, 09h26
  2. Réponses: 2
    Dernier message: 27/05/2009, 19h54
  3. Faire une requête pour Access selon des Checkbox
    Par Invit-é dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 26/06/2007, 16h57
  4. Réponses: 3
    Dernier message: 13/05/2006, 11h06
  5. problème pour faire une requête
    Par mitchbuck dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/11/2005, 22h48

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