Bonjour,
Voila je rencontre un petit problème avec mon code.
Pour la gestion de commandes je souhaite afficher les informations de 4 tables differentes.
Voici mes 4 tables:
customers
Customer_ID, Customer_Number, Customer_Name....
item
Stock_ID, Stock_Number, Stock_Name, Stock_Ref.....
sales_detail`
Sales_ID, Sales_Number , Stock_Item, Sales_Quantity....
sales
Sales_ID , Sales_Number, Sales_Date, Customer_ID....
Je souhaite afficher Sales_Number, Customer_Name, Sales_Date, Stock_Item, Sales_Quantity.
Mon programme etant deja fait je ne peux modifier les tables.
Je suis vraiment debutant en SQL et je ne trouve pas de solution.
Si quelqu'un pouvait m'aider svp.
Bien a vous
Décrivez ici votre code ou ce que vous cherchez à faire
Entourez votre code avec ce symbole ```
Décrivez ici ce que vous cherchez à obtenir
Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(
Ok j'ai trouve. J'ai rajoute un GROUP BY
SELECT S.Sales_Date, C.Customer_Name, SI.Stock_Name, Sales_Quantity
FROM (
a_sales_detail SD, a_stock_items SI, a_customers C, a_sales S
)
JOIN a_sales ON SD.Sales_Number = S.Sales_Number
JOIN a_stock_items ON SD.Stock_Item = SI.Stock_Number
JOIN a_customers ON S.Customer_ID = C.Customer_Number
GROUP BY SD.Sales_ID
Merci!
Bonsoir,
Tu peux faire des jointures comme ceci
SELECT S.Sales_Number, C.Customer_Name, S.Sales_Date, SD.Stock_Item, SD.Sales_Quantity
FROM sales_detail SD
INNER JOIN sales S ON SD.Sales_Number = S.Sales_Number
INNER JOIN customers C ON S.Customer_ID = C.Customer_ID
INNER JOIN item I ON SD.Stock_Item = I.Stock_ID
le schema n'est pas très propre (compréhensible) j'espère ne pas m'être trompé sur les clés
Bonsoir,
Merci pour la reponse.
J'ai execute ta requete mais il y a eu plusieurs erreurs a surmonter.
Finalement voici le code fonctionnel apres quelques recherches:
SELECT S.Sales_Number, C.Customer_Name, SD.Stock_Item, SD.Sales_Quantity
FROM (
sales_detail SD, stock_items SI, customers C, sales S
)
LEFT JOIN sales ON SD.Sales_Number = S.Sales_Number
LEFT JOIN customers ON S.Customer_ID = C.Customer_ID
LEFT JOIN stock_items ON SD.Stock_Item = SI.Stock_ID
Merci de ton aide!!
Humm !!! pas sûr que ça renvoie le résultat escompté
ça m'a l'air de faire des produits cartésiens XD
le regroupement des tables entre parenthèses (pas très utilisé) c'est pour regrouper des tables pour une jointure
mais dans ce cas il ne faut pas redéfinir les tables par la suite dans d'autres JOIN
Tu utilises des LEFT JOIN mais c'est pas utile ici car on peut affirmer qu'une commande a forcément un client et qu'une ligne de commande a forcément un article, le LEFT JOIN te ramène aussi les orphelins mais ici s'il y en a c'est grave.
Par ailleurs c'est bien de mettre des contraintes d'intégrité référentielle pour que :
Salut,
Merci encore de ta reponse.
Effectivement j'ai parle trop vite il y a des produits cartesiens.
Voici ma requete actuelle finalement:
SELECT S.Sales_Number, S.Sales_Date, C.Customer_Name, SI.Stock_Name, Sales_Quantity
FROM (
a_sales_detail SD, a_stock_items SI, a_customers C, a_sales S
)
JOIN a_sales ON SD.Sales_Number = S.Sales_Number
JOIN a_stock_items ON SD.Stock_Item = SI.Stock_Number
Voici le resultat
Pour explication ma base de donnees comporte 4 articles.
Ma commande actuelle comporte 2 articles : Article 1 et Article 2, mais le resultats m'affiche chque article de la commande x Le nombre d'articles total de ma base....
Sales_Number Sales_Date Customer_Name Stock_Name Sales_Quantity
Sales-00000000000001 2016-07-24 03:48:58 Jean Claude Article 1 11
Sales-00000000000001 2016-07-24 03:48:58 Jean Claude Article 1 11
Sales-00000000000001 2016-07-24 03:48:58 Jean Claude Article 1 11
Sales-00000000000001 2016-07-24 03:48:58 Jean Claude Article 1 11
Sales-00000000000001 2016-07-24 03:48:58 Jean Claude Article 2 22
Sales-00000000000001 2016-07-24 03:48:58 Jean Claude Article 2 22
Sales-00000000000001 2016-07-24 03:48:58 Jean Claude Article 2 22
Sales-00000000000001 2016-07-24 03:48:58 Jean Claude Article 2 22