أفضل طريقة لتحقيق مصفوفة الاستبعاد عبر الاستعلام
-
06-07-2019 - |
سؤال
ما هي أفضل طريقة لتحقيق مصفوفة الاستبعاد هذه عبر الاستعلام.
هناك عدد ثابت من المنتجات في الجدول والفكرة هي أنه إذا تم بيع منتج لعميل (ممثل بواسطة الصف) ، فقد يتم أو لا يتم بيع المنتجات الأخرى (الأعمدة) بناءً على مصفوفة القاعدة أدناه. الهدف من ذلك هو الحصول على رمز المنتجات المسموح به للبيع لأي رمز منتج تم بيعه.
ProductCode|MRLSPN|MRLSPPN|MRLSDF|MRLSPDF|LGS|LGP|HOBN|HODF|HVO|HVOF
MRLSPN |No |No |No |No |No |Yes|No |No |No |No
MRLSPPN |No |No |No |No |No |No |No |No |No |No
MRLSDF |No |No |No |No |No |Yes|No |No |No |No
MRLSPDF |No |No |No |No |No |No |No |No |No |No
LGS |No |No |No |No |No |Yes|No |No |No |No
LGP |Yes |No |Yes |No |No |No |No |No |No |No
HOBN |No |No |No |No |Yes|Yes|No |No |No |No
HODF |No |No |No |No |Yes|Yes|No |No |No |No
HVO |Yes |Yes |Yes |Yes |Yes|Yes|Yes |Yes |No |No
HVOF |Yes |Yes |Yes |Yes |Yes|Yes|Yes |Yes |No |No
جاهز عن طريق الصف عبر الأعمدة.
المحلول
هل يمكنك تغيير التنسيق الخاص بك من مصفوفة إلى جدول جمعية مثل
الجدول منتجات إضافية: SoldProductCode إضافية
لذلك ستبدو طاولتك
SoldProdCode, Additional ProdCode
MRLSPN, LGP
MRLSDF, LGP
الآن يمكنك ببساطة تشغيل استعلام لتقوله
SELECT AdditionalProductCode
FROM AdditionalProducts
WHERE SoldProductcode='MRLSPN'
يحرر
فائدة أخرى من هذا النهج هي أنه إذا قدمت خصومات خاصة إذا اشتريت MRLSPN تحصل على LGP بخصم 10 ٪ ، وإذا اشتريت MRLSDF ، فقد تحصل على 15 دولارًا. باستخدام هذا النموذج ، يمكنك تمديد جدول الارتباط لتضمين سمات إضافية. قد ينطبق هذا أو لا ينطبق على النموذج الخاص بك.
نصائح أخرى
إنه جدول رابط للعديد من العدد:
Sold CanBeSold ---- --------- MRLSPN LGP MRLSDF LGP …
, واستعلام:
SELECT CanBeSold
FROM matrix
WHERE Sold = @Product
إذا كان بإمكانك ضمان ما لا يزيد عن 32 عمودًا ، فيمكنك تنفيذها باستخدام Int (32 بت) كحقل فلاغ بت. لكن العلاقة بين العديد من الرجال ستكون أكثر مرونة.
قم بإنشاء جدول تعيين للعديد من العدد ، ProductCode2ProductCodemapping
CREATE TABLE ProductCode2ProductCodeMapping
(
ProductCodeId int,
AllowedProductCodeId int
)
مع مفتاح أساسي مركب باستخدام كلا العمودين.
ثم أدخل صفًا لكل منتج ومنتج ذي صلة.
ثم ببساطة الاستعلام على النحو التالي:
SELECT AllowedProductCodeId
FROM ProductCode2ProductCodeMapping
WHERE ProductCodeId = @myProductCodeId
إذا لم يكن لديك معرف عدد صحيح للمنتجات ، فيمكنك إما إضافتها أو استخدام Char ProductCode بدلاً من ذلك (أفضل السابق)