0

我正在尝试构建一个 SQL 语句,它从一个表中提取记录,但按另一个表对它们进行排序。Main - 是我的主要产品表 MainCategory - 是产品的类别

每个产品都可以属于多个类别 - 所以在 Main 我有一个名为 CategoryIds 的字段,其中包含该产品所属的所有类别的 ID。(我现在知道这是错误的做法)

表格布局:

在此处输入图像描述

所以基本上当我点击一个类别时,例如品牌,我希望能够对每个类别中的产品进行排序以按我想要的顺序显示 - 这就是我创建表 CatSort 的原因,我可以将 CategoryId 与 ProductId 一起放在那里DisOrder 是它们的显示方式。

所以在我的页面上的 SQL 语句:

Select * 
From Main  
Where CategoryIds = '11' OR 
      CategoryIds LIKE '11,%' OR 
      CategoryIds LIKE '%, 11,%' OR 
      CategoryIds LIKE '%, 11'

提取类别“品牌”中的所有产品,但我如何扩展该 SQL 语句以按 CatSort 对它们进行排序,请记住,并非该类别中的所有记录都将在 CatSort 中(或者如果它们会更好?他们只有当他们实际将它们排序为他们喜欢的顺序时才会添加到 CatSort。但是如果将新产品添加到该类别,它不会自动添加到 CatSort。)

4

2 回答 2

0

根本问题是,在查询 Main 时,由于 Main 中的一条记录可以有多个类别,因此排序顺序可能有多个值。

以下查询将起作用:

Select * 
From Main
     Left outer join CatSort on CatSort.ProdId = Main.Id
Where CategoryIds = '11' OR 
      CategoryIds LIKE '11,%' OR 
      CategoryIds LIKE '%, 11,%' OR 
      CategoryIds LIKE '%, 11'

它会做它被要求做的事情,但是如果有多个排序顺序,那么主记录将出现在每个排序顺序位置。

于 2012-09-28T16:13:17.033 回答
0

通过按照建议规范化类别和产品表之间的关系来解决

于 2017-09-18T12:54:03.767 回答