أفضل طريقة لتحقيق مصفوفة الاستبعاد عبر الاستعلام

StackOverflow https://stackoverflow.com/questions/1033045

  •  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 بدلاً من ذلك (أفضل السابق)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top