ما هي تعليمة sql لحساب كمية المخزونات ؟
#1
Question 
السلام عليكم ورحمة الله تعالى وبركاته
كيف بناء تعليمة 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 لكل منتج)
وبارك الله فيكم Smile
الرد
#2
1- ما نوع قاعدة البيانات
[-] كل من 1 user says قال شكرا ل Mustapha29 على المشاركة المفيدة
  • nacertaker
الرد
#3
راجع هذا الدرس

http://delphi4arab.net/forum/showthread....9%8A%D8%A9
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 2 users say قال شكرا ل Delphi4Us على المشاركة المفيدة
  • nacertaker, Mustapha29
الرد
#4
(03-04-2017, 06:51 PM)Mustapha29 كتب : 1- ما نوع قاعدة البيانات
sql server 2008
الرد
#5
حتى لا أدعك تنتظر حاول تعديل الكود الأتي بما يلبي رغباتك
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 user says قال شكرا ل Mustapha29 على المشاركة المفيدة
  • nacertaker
الرد
#6
شكرا جزيلا .. جاري التجربرة

التعليمة لم تفلح معي   Sad أو بالأحرى محاولتي فاشلة  لسببين :
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;
 
الرد
#7
الكود بعد التصحيح
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;
الرد
#8
(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 يشتغل مية مية
[-] كل من 1 user says قال شكرا ل Mustapha29 على المشاركة المفيدة
  • nacertaker
الرد
#9
(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
شكرا مرة أخرى.
الرد
#10
استعمل بدل Nz ---> SELECT COALESCE([Qte], 0) FROM .........
[-] كل من 1 user says قال شكرا ل Mustapha29 على المشاركة المفيدة
  • nacertaker
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم