很抱歉,如果这个问题令人困惑,但......
我有一个类别>我的数据库中的子类别安排(所有猫+子猫都在同一张表中)。
表格如下:
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)
其中#hisCat.id#是父类别(例如23或26)
运行此选项时,如果子类别父项是列表(23,26),则只有在#hisCat.id#是列表中的第一个时才会选择它。
我可能会出错的任何想法。或者,有更好的方法吗?
答案 0 :(得分:0)
首先,我不得不询问你们的关系。我的意思是在理想世界中你会有一个包含父项的表,以及一个将子类别分开的表,然后有一个连接这两个的临时表。
根据您提出此问题的方式,我首先必须拒绝使用数据库设计缺陷,并通过将它们拆分为标准化方法来重新设计这种关系。
SELECT name, LEFT(parent, INSTR(@parent, ',')-1),
SUBSTR(parent,INSTR(parent, ',')+1,LENGTH(parent)) from cat WHERE thisCat.ID (**unspecified**) IN (parent)
这只适用于两个父实体,如果它们共享相同的记录,除非它变得非常毛茸茸。