السلام عليكم ورحمة الله تعالى وبركاته
كيف بناء تعليمة sql لحساب كمية المخزونات انطلاقا من المبيعات والمشتريات كما هو موضح في المعطيات التالية:
- جدول المنتجات Produits يحتوي على كود المنتج Code_Produit (مفتاح رئيسي) وخصائص المنتج Dest_Produit.
- جدول المشتريات Achat يحتوي على رقم العملية Code_achat (مفتاح رئيسي) و كود المنتج (مفتاح تانوي) code_produit، والكمية qte_achat.
- جدول المبيعات Ventsيحتوي على رقم العملية Code_Vent (مفتاح رئيسي) و كود المنتج (مفتاح تانوي) code_produit، والكمية qte_vent.
المطلوب:
بناء تعليمة تعرض جميع المنتجات المتواجدة في جدول المنتجات produit و خصائصها Dest_produit والكمية المتبقية في المخزون( طرح الكمية المباعة qte_vent من الكمية المشترات qte_achat لكل منتج)
وبارك الله فيكم

حتى لا أدعك تنتظر حاول تعديل الكود الأتي بما يلبي رغباتك
SQL
كود :
SELECT T.NU, T.Prd_U, (SELECT sum(E.Qte_e) FROM T_Entrees E WHERE E.NP_e = T.NU) AS QTE, (SELECT sum(S.Qte_LF) FROM T_Ligne_Fact S WHERE S.N_LF = T.NU) AS QTS, [QTE]-[QTS] AS Reste
FROM t_produits AS T;
شكرا جزيلا .. جاري التجربرة
التعليمة لم تفلح معي

أو بالأحرى محاولتي فاشلة لسببين :
1- لم أفهم معاني بعض الترميزات مثل:
هل اسم جدول المدخلات E، أم t_Entrees وجدول المخرجات هل هو S أم T_ligne_fact
2- sql server لم يقم بالطرح [QTE]-[QTS] ولم يتعرف عليه أصلا.
3- عندما قمت بالعملية في قاعدة بيانات access يطالبني بإدخال قيمة code_produit (لذيك T.NU)
هاته هي المحاولة الخاصة بي:
كود :
SELECT PRODUIT.code_prod AS Expr1, PRODUIT.dest_prod AS Expr2, (SELECT sum(achat.qte) FROM achat WHERE achat.code_prod = produit.code_prod) AS QTE_E, (SELECT sum(vendre.qte_vent) FROM vendre WHERE vendre.code_prod = produit.code_prod) AS QTS, [QTE_E]-[QTS] AS Reste
FROM PRODUIT AS T;
الكود بعد التصحيح
SELECT T.code_prod, T.dest_prod, (SELECT Nz( sum(Qte),0) FROM achat AS E WHERE E.code_prod = T.code_prod) AS QTE_E, (SELECT Nz(sum(qte_vent),0) FROM vendre AS S WHERE S.code_prod = T.code_prod) AS QTS, [QTE_E]-[QTS] AS Reste
FROM PRODUIT AS T;
(04-04-2017, 11:09 PM)nacertaker كتب : [ -> ]الكود بعد التصحيح
SELECT T.code_prod, T.dest_prod, (SELECT Nz( sum(Qte),0) FROM achat AS E WHERE E.code_prod = T.code_prod) AS QTE_E, (SELECT Nz(sum(qte_vent),0) FROM vendre AS S WHERE S.code_prod = T.code_prod) AS QTS, [QTE_E]-[QTS] AS Reste
FROM PRODUIT AS T;
هذا الكود بعد التصحيح اشتغل أم لا ؟
لأن الذي بعثته لك يشتغل معي و أنا متأكد و خاصة في Access يشتغل مية مية
(05-04-2017, 12:31 PM)Mustapha29 كتب : [ -> ] (04-04-2017, 11:09 PM)nacertaker كتب : [ -> ]الكود بعد التصحيح
SELECT T.code_prod, T.dest_prod, (SELECT Nz( sum(Qte),0) FROM achat AS E WHERE E.code_prod = T.code_prod) AS QTE_E, (SELECT Nz(sum(qte_vent),0) FROM vendre AS S WHERE S.code_prod = T.code_prod) AS QTS, [QTE_E]-[QTS] AS Reste
FROM PRODUIT AS T;
هذا الكود بعد التصحيح اشتغل أم لا ؟
لأن الذي بعثته لك يشتغل معي و أنا متأكد و خاصة في Access يشتغل مية مية
الكود الذي كتبته صحيح ويعمل 100% على الأكسس ، كلما قمت به هو إضافة القيمة 0 إذا كانت القيم فارغة ، لكنهلا يعمل على sql server
شكرا مرة أخرى.
استعمل بدل Nz ---> SELECT COALESCE([Qte], 0) FROM .........