我有8个主要类别不是任何表格的一部分。我希望手动将这些类别添加到如下所示的数据库类别中:
ID Category name Parent Category name
1 Categoy 1 -
2 Category 2 -
... ... ...
8 Category 8 -
现在的问题是我有桌子和桌子的产品。表中的条款包括所有类别(这8个主要类别除外)和类别名称。另一个表Products也包含所有类别(主要类别除外),但在两个列中,如:类别ID和子类别ID。
因此,我现在要做的是以这种方式更新表类别:如果表产品中的类别ID以数字1开头,我希望在表类别中插入它的名称,并在列父类别名称中插入父(类别1)名,所以表类别现在应该如下所示:
ID Category name Parent Category name
1 Categoy 1 -
2 Category 2 -
... ... ...
8 Category 8 -
111 Category 111 Category 1
因此,如果表产品的分类ID以数字2开头,我想从分类表中获取它的名称,然后插入到类别表中,但是使用父类别名称:类别2。
在此之后,当我将每个类别都放置为主类别的子类别时,我希望再次遍历Products表,并在表类别中插入所有子类别名称,但从类别名称中插入父类别名称。
因为我在表产品中有许多相同的分类子类别对,所以我从
SELECT DISTINCT(CatID,SubCatID)
FROM Products
稍后,当谈到需要从表分类中选择类别名称并将它们作为主类别的子类别时,我会遇到问题。
是否可以使用1次查询?我知道它将需要一些硬编码,因为主要类别没有在任何表中。
发布于 2015-03-10 07:29:26
也许我误解了这个问题,但似乎您正在尝试创建一个与自身相关的表,以存储相当于树的内容。
因此,您有一些类别可以是其他类别的子类别。假设我是正确的,我将构造该表,使其具有一个ID列作为主键,一个类别列存储名称,一个ParentID列存储对ID列的外键引用。
这样,您将存储具有无限嵌套潜力的父-子类别。
选择父母的子女如下所示:
select ParentCategory.ID, ParentCategory.Category, ChildCategory.ID, ChildCategory.Category
from CategoryTable ParentCategory
join CategoryTable ChildCategory on ChildCategory.ParentID = ParentCategory.ID
where ParentCategory.Category = [insert parent category name here]
有多少父母,他们有多少个孩子?
select ParentCategory.ID, ParentCategory.Category, count(ChildCategory.ID)
from CategoryTable ParentCategory
join CategoryTable ChildCategory on ChildCategory.ParentID = ParentCategory.ID
group by ParentCategory.ID, ParentCategory.Category
having count(ChildCategory.ID) > 0
https://stackoverflow.com/questions/28529454
复制相似问题