منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : عمل شرط داخل استعلام
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
ألف شكر لك فقط لوكان بالإمكان شرح وجيز لكي أفهمه لأني سأضيف شروطا أخرى في الإستعلام
ألف شكر لكم مرة أخرى
يوجد اختصار للجزئية المطلوبة أي بدون CAST
كود :
SELECT Facture_L.Num_Vent,
      Facture_L.Num_Fact_Vent,
      Facture_L.ID_Prod,
      Facture_L.UM,
      UM.Nom_UM,
      (CASE WHEN (Facture_L.UM = 1) THEN (Facture_L.Qte_V * 0.02) ELSE (Facture_L.Qte_V) END) AS Qte,
      Facture_L.Prix_V
FROM   Facture_L
INNER JOIN UM ON Facture_L.UM = UM.ID_UM

ولتوضيحها فهي تعادل If Then Else
If = CASE WHEN
Then = THEN
Else = ELSE

انا لم أكن أعرفها إلا الآن بفضل سؤالك ومحاولة ايجاد جوابه

حتى أنا تتعامل مع تعدد الحالات مثل
كود :
CASE Facture_L.UM
 WHEN 1 THEN (Facture_L.Qte_V * 0.02)
 WHEN 2 THEN (Facture_L.Qte_V * 0.04)
 WHEN 3 THEN (Facture_L.Qte_V * 0.06)
 WHEN 4 THEN (Facture_L.Qte_V * 0.08)
 WHEN 5 THEN (Facture_L.Qte_V * 0.10)
 ELSE (Facture_L.Qte_V)
END AS Qte


ويمكن كتابة الاستعلام بالشكل التالي ويعمل ايضا
كود :
SELECT Facture_L.Num_Vent,
      Facture_L.Num_Fact_Vent,
      Facture_L.ID_Prod,
      Facture_L.UM,
      UM.Nom_UM,
      (CASE (Facture_L.UM) WHEN (1) THEN (Facture_L.Qte_V * 0.02) ELSE (Facture_L.Qte_V) END) AS Qte,
      Facture_L.Prix_V
FROM   Facture_L
INNER JOIN UM ON Facture_L.UM = UM.ID_UM
ألف شكر لك أخي الكريم تم بحمد الله وتوجيهاتك الإستعلام يعمل ولله الحمد والشكر ولكم الفضل

الإستعلام بشكله النهائي هو 

[attachment=14309]
لا تحتاج إلى كتابة CAST ولا تحتاج أن تذكر WHEN 1 أو WHEN 2 لأنك ستضرب في 1 وكأن شيئا لم يكن

اكتفي بالحالات التي ستعطي نتيجة مختلفة عند ضربها
والتي حسب الاستعلام الأخير لك تحتاج عملية فقط عندما يكون الرقم 3 أو 4 فقط
كود :
(CASE (Facture_L.UM) WHEN (3) THEN (Facture_L.Qte_V * 0.01) WHEN (4) THEN (Facture_L.Qte_V * 0.02) ELSE (Facture_L.Qte_V) END) AS Qte,
لاحظ لم أكتب CAST لأنك لا تحتاجها
الصفحات : 1 2