2011-05-17 59 views
1

我有一个看起来像这样的SQL数据库:enter image description hereSQL产品组合

有了这个数据库...

如果我有一个产品,说棉衬衫和这款产品在三种选择,说大小,颜色和长或短袖。

从我的CMS我说该产品是在以下条件:
大 - 白色 - 长袖
大 - 绿色 - 长袖
大 - 绿色 - 短袖
小 - 白色 - 长袖

因此,在我的网站的前端(使用Javascript),我可以说当选中Large时,启用白色&绿色复选框。但是,当小被选中,我只需要启用白复选框等

理想的结果应该是这样的:
依赖性[“大”] = [白,绿]
依赖性['大,白'] = [长袖]
依赖性[' 绿色大 '] = [长袖,短袖]
依赖性[' 小 '] = [白]
依赖性[' 白色小'] = [长袖子]

SQL看起来可能会达到什么样的结果?

非常感谢任何帮助
谢谢

回答

1

一个选项被选择的每个时间,而不是做一个查询,你可以使用JavaScript来修改可用的选项。因此,您的初始查询只会以数组,XML或JSON的形式返回产品的所有数据,然后您可以根据需要过滤客户端。

select * --replace the * with the fields you actually want 
from Product p 
left outer join Option o on p.Id = o.ProductId 
left outer join OptionValue ov on o.id = ov.OptionId 
left outer join CombinationDetail cd on ov.Id = cd.OptionValueId 
left outer join Combination c on cd.CombinationId = c.Id 
+0

这正是我打算做的......我需要一个查询来打印出所有可用的组合。然后,我将使用Javascript修改页面上的可用选项。不过,我被困在SQL查询部分 – Leigh 2011-05-17 18:18:19

+0

@Leigh上面;我使用了'LEFT JOINs',因为不知道所有产品是否有选项或者...都相应地修改。 – RedFilter 2011-05-17 18:22:41

+0

感谢您的回应,但您的SQL只是返回产品的选项。我需要每个选项的依赖关系,如我在上面的文章中所述。用你的SQL我怎么知道小衬衫只有白色才可用? – Leigh 2011-05-17 18:33:17