从子猫有多个父母的类别中选择子类别

时间:2014-02-06 19:39:59

标签: mysql sql

很抱歉,如果这个问题令人困惑,但......

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

表格如下:

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#是列表中的第一个时才会选择它。

我可能会出错的任何想法。或者,有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

首先,我不得不询问你们的关系。我的意思是在理想世界中你会有一个包含父项的表,以及一个将子类别分开的表,然后有一个连接这两个的临时表。

根据您提出此问题的方式,我首先必须拒绝使用数据库设计缺陷,并通过将它们拆分为标准化方法来重新设计这种关系。

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

这只适用于两个父实体,如果它们共享相同的记录,除非它变得非常毛茸茸。