MS Access SQL产品组合导出

时间:2015-05-09 14:59:32

标签: sql ms-access

所以我在SQL中有点生疏,在这里真的需要一些帮助 - 非常高兴。

我手边有一个基于MS Access的在线商店系统,我需要导出所有可能的产品变体。

我有一张桌子" VariantTypes"其中包含所有必需的信息。 它看起来像这样:

ProductFKID | VariantTypeFKID | VariantValueFKID | Surcharge 

一种产品的数据如下所示:

2 | 3 | 12 | 0,00 €

2 | 3 | 13 | 39,00 €

2 | 3 | 14 | 39,00 €

2 | 134 | 556 | 0,00 €

2 | 134 | 557 | 90,00 €

2 | 134 | 558 | 90,00 €

现在对于新导入我需要每个可能的变体组合,它应该如下所示:

2 | 3 | 12 | 0,00 € | 134 | 556 | 0,00 €

2 | 3 | 12 | 0,00 € | 134 | 557 | 90,00 €

2 | 3 | 12 | 0,00 € | 134 | 558 | 90,00 €

2 | 3 | 13 | 39,00 € | 134 | 556 | 0,00 €

2 | 3 | 13 | 39,00 € | 134 | 557 | 90,00 €

2 | 3 | 13 | 39,00 € | 134 | 558 | 90,00 €

2 | 3 | 14 | 39,00 € | 134 | 556 | 0,00 €

2 | 3 | 14 | 39,00 € | 134 | 557 | 90,00 €

2 | 3 | 14 | 39,00 € | 134 | 558 | 90,00 €

当然,如果我有一种产品的3种变体类型,它应该以相同的方式工作。最好的例子是:

颜色为黑色,白色,红色且尺寸为S,M,L的产品 我需要:

黑色 - S |黑色 - M |黑色 - L |白 - S |白色 - M |白色 - L |红 - S | ...

我确信有一种简单的方法可以解决这个问题,因为我很久以前就在学校里学到了这一点。我只是不记得如何。

提前感谢您的帮助!

电贺, KaptainEaglu

更新

我设法创建以下语句来创建笛卡尔积:

  

SELECT v1.ProductID,v1.Name,v1.Value,v1.Surcharge,v2.Name,v2.Value,v2.Surcharge

     

FROM [smartstore]。[dbo]。[smarstorevariants] v1

     

CROSS JOIN [smartstore]。[dbo]。[smarstorevariants] v2

     

WHERE v1.ProductID = v2.ProductID AND v1.Name!= v2.Name

     

ORDER BY v1.ProductID desc

但结果我得不到9个组合,但结果是18。 例如:Black-S,Black-M,...... 和S-Black,S-White,......

我知道,从技术上讲,它们是不同的组合,但对于我的商店出口,它们是双重组合。

关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:0)

在Access SQL中更容易:

ProductFKID | VariantTypeFKID | VariantValueFKID |附加费

SELECT DISTINCT
    v1.ProductFKID, 
    v1.VariantTypeFKID, v1.VariantValueFKID, v1.Surcharge,
    v2.VariantTypeFKID, v2.VariantValueFKID, v2.Surcharge    
FROM 
    VariantTypes As v1,
    VariantTypes As v2
WHERE 
    v1.ProductFKID = v2.ProductFKID  
    AND 
    v1.VariantTypeFKID <> v2.VariantTypeFKID 
ORDER BY 
    v1.ProductFKID Desc