抱歉,这个问题令人困惑,但是...

我的数据库中有一个类别>子类别安排(所有的猫+子猫都在同一张表中)。

这些表如下所示:

ID - AI id
name - cat name
parent - the parent of this category
level - 1,2 or 3


问题是,某些类别可以有多个父母,这是一个示例:

id: 23
name: furniture
parent: null
level: 1

id: 26:
name: mailroom
parent: null
level: 1

id: 218
name: bookcases
parent: 23
level: 2

id: 262
name: mailroom furniture
parent: 23, 26
level: 2


因此,邮件室家具应同时出现在家具(23)和邮件室(26)的类别中
我选择子类别的SQL如下所示:

SELECT name, parent
FROM cat
WHERE #thisCat.id# IN (parent)


其中#thisCat.id#是父类别(例如23或26)

运行此命令时,如果子类别父对象是列表(23,26),则仅当#thisCat.id#是列表中的第一个时才选择它。

我可能会出错的任何想法。还是有更好的方法呢?

最佳答案

首先,我必须询问您的关系。我的意思是,在理想世界中,您将有一个包含父级的表和一个将子类别分开的表,然后将两个临时表连接在一起。

基于您提出这个问题的方式,我首先必须拒绝数据库设计的缺陷,并通过将其拆分为标准化方法来潜在地重新设计这种关系。

SELECT name, LEFT(parent, INSTR(@parent, ',')-1),
 SUBSTR(parent,INSTR(parent, ',')+1,LENGTH(parent)) from cat WHERE thisCat.ID (**unspecified**) IN (parent)


如果两个父实体共享相同的记录,则这仅适用于两个父实体,除此之外,它变得非常繁琐。

10-04 15:49
查看更多