Problème de jointure entre plusieurs tables

cs_Krasha Messages postés 36 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 mars 2010 - 11 févr. 2010 à 08:15
cs_Krasha Messages postés 36 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 mars 2010 - 13 févr. 2010 à 18:06
Bonjour à tous,

Je bloque depuis deux jours sur une requête pour extraire des données de plusieurs tables (pour le site de restaurant). Je dois en effet extraire les données 'Lib_Prod' et 'Annee_Prod' de la table 'PRODUITS', 'Appellation' de la table 'CARAC_VINS' et 'Prix_TTC_Article' de la table 'ARTICLES'.(voir image de la base ci-dessous)
Ce qui doit me donner quelque chose comme cela:

Noms | Année | Appellation | Prix
Domaine Maupas | 2006 | Chablis | 35.00 €
François Villard | 2007 | Côtes du Rhône | 50.00 €
Guérin Vergisson | 2005 | Saint-véran | 30.00 €

Voici la partie de ma base qui nous intéresse (en tout cas moi ):


Jusque là pas de problème, avec la requête suivante j'ai réussi à extraire ce que je voulais:
$listVinsBlancs = "SELECT DISTINCT LIB_PROD, ANNEE_PROD, APPELLATION, PRIX_TTC_ARTICLE
FROM produits
INNER JOIN est_produit 
ON produits.ID_PROD = est_produit.ID_PROD 
INNER JOIN articles 
ON articles.ID_ARTICLE = est_produit.ID_ARTICLE 
INNER JOIN cat_produit 
ON cat_produit.ID_CAT_PROD = produits.ID_CAT_PROD 
INNER JOIN carac_vins
ON produits.ID_CARAC_VIN = carac_vins.ID_CARAC_VIN
INNER JOIN unites
ON articles.ID_UNITE = unites.ID_UNITE
WHERE cat_produit.ID_CAT_PROD = '48' //le code pour le vin blanc
AND produits.EN_VENTE = '1' //égale à 'en stock'
AND articles.ID_MENU = '0' //ne fait pas partie d'un menu
AND unites.ID_UNITE = '6' //6 est égale à 'bouteille'
ORDER BY articles.PRIX_TTC_ARTICLE ASC;";


Là où ça se complique c'est que le prix indiqué est égal au prix d'une bouteille, et que je dois aussi indiquer le prix de la 1/2 bouteille et du verre.

Ces prix sont dans ma table 'ARTICLES' un produit (ex:'Domaine Maupas') est donc indiqué 3 fois dans ma table 'ARTICLES' pour la bouteille, la demie-bouteille et la verre. La différence se fait par la référence à l'Id_Unite (6 bouteille, 7 demie-bouteille, 5 = verre).

De plus, pour certains produits on ne vend pas de 1/2 bouteille ni de verre. Donc il se peut qu'il existe 1, 2 ou 3 occurrences dans la table 'ARTICLES' pour le même produit.

Je ne sais pas comment afficher dans le même tableau toutes données, surtout quand les occurrences sont inexistantes, pour donner un résultats comme celui-ci:

Noms | Année | Appellation | Prix bout. | Prix 1/2 bout. | Prix du verre
Domaine Maupas | 2006 | Chablis | 35.00 € | 19.00 € | n.a.
François Villard | 2007 | Côtes du Rhône | 50.00 € | 27.00 € | 9.00€
Guérin Vergisson | 2005 | Saint-véran | 30.00 € | n.a. | n.a.

Si vous avez une piste je vous écoute. Et si jamais vous manquez de renseignements pour me répondre demandez moi, à force d'être plongé dedans j'en oublie parfois de donner des détails essentiels à la compréhension du problème.

Merci à l'avance de votre attention.

1 réponse

cs_Krasha Messages postés 36 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 mars 2010
13 févr. 2010 à 18:06
Ma bouteille à la mer n'a malheureusement pas été repêchée
0
Rejoignez-nous