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 ```

Ce que je veux

Décrivez ici ce que vous cherchez à obtenir

Ce que j'obtiens

Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

5 réponses


Sentenza
Auteur
Réponse acceptée

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

Sentenza
Auteur

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 :

  • une 'sale' soit liée à un "Customer" valide (qui existe)
  • une 'sales_detail' soit liée à un item valide
  • une 'sale_detail' soit liée à une 'sale' valide
    après ça, ta bd est blindée :)
Sentenza
Auteur

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