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 :
Je vais bien avoir que les produits du prestataire pour un pays donné.
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
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
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 = 7
Ma requete pour la belgique va fonctionner, mais elle ne fonctionnera pas 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
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.
Partager