抱歉,这个问题令人困惑,但是...
我的数据库中有一个类别>子类别安排(所有的猫+子猫都在同一张表中)。
这些表如下所示:
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)
如果两个父实体共享相同的记录,则这仅适用于两个父实体,除此之外,它变得非常繁琐。