我无法选择多个结果与子/父母关系。这里是带有分类树的表格。该category
表表示的关系,而category_name
表包含名称字符串:如何在一个查询中链接SQL选择结果?
[category] [category_name]
id, id_parent id, name
------------- --------------
1 NULL 1 'animal'
2 1 2 'mammal'
3 2 3 'lion'
4 2 4 'sea_creature'
5 4 5 'lion'
作为输入我的名字,必须转化为ID的。层次结构正好3层深。例如:animal, mammal, lion,
- >1, 2, 3
。
正如你所看到的lion
名称用于不同的类别。但是,上一级类别是唯一的,子类别的名称在一个父类别中是唯一的。
我可以做三个独立的查询,从animal
开始,然后再利用其id
随后查询id_parent
比较:
查询#1:
SELECT
cn.id
FROM
category_name cn
WHERE
cn.name = 'animal'
(这个查询在的保存结果可变parent
)
查询#2:
SELECT
cn.id
FROM
category_name cn
INNER JOIN category c ON cn.id = c.id
WHERE
cn.name = 'mammal' AND c.id_parent = <parent>
依此类推。但我相信有更好的方法来做到这一点。
谢谢。
您可以使用“UNION”并确保使用时的性能。 –