【发布时间】:2014-09-03 12:48:44
【问题描述】:
我有以下数据库结构/层次结构:
表product_type:
id,name, ....
表产品:
id,parent_id, name, ...
parent_id:是product_type id
表treeNode:
id, parent_id, name, type
它是一个树层次结构(根有 n 个子节点) 层次结构的数量是未知。
col type 的值为 "CATEGORY" 或 "GROUP",
这意味着,我有 2 棵树:
类别:
TreeNode 1
sub 1.1
sub.1.1.1
sub.1.1.2
....
sub 1.2
sub.1.2.1
sub.1.2.2
....
TreeNode 2
sub 2.1
sub.2.1.1
sub.2.1.2
....
sub 2.2
sub.2.2.1
sub.2.2.2
....
组:
TreeNode 1
sub 1.1
sub.1.1.1
sub.1.1.2
....
sub 1.2
sub.1.2.1
sub.1.2.2
....
TreeNode 2
sub 2.1
sub.2.1.1
sub.2.1.2
....
sub 2.2
sub.2.2.1
sub.2.2.2
....
表linked_treeNode:
product_id, treeNode_id
现在让我们说,用户选择:
1:产品类型(参数:$selected_type)
2:一个类别(参数:$selected_cat)
3:一个组(参数:$selected_group)
现在我想显示满足这些选择的所有产品:
1-) 链接到选定的类别或其子类别
与
2-) 链接到选定的组或其子组
与
3-) 链接到选定的产品类型
MySQL 语句(1 条语句)是什么?
我试过这个:
SELECT P.* FROM
product P, treeNode C, treeNode G, linked_TreeNode LC
WHERE
p.parent_id='$selected_type'
AND
(
C.type='CATEGORY'
AND
C.parent_id='$selected_cat'
AND
P.id=LC.product_id
AND
(LC.treeNode_id=C.id OR LC.treeNode_id='$selected_cat')
)
AND
(
G.type='GROUP'
AND
G.parent_id='$selected_group'
AND
P.id=LC.product_id
AND
(LC.treeNode_id=G.id OR LC.treeNode_id='$selected_group')
)
;
但我总是得到 0 结果!
我尝试了许多其他语句(更改),包括 JOINS ..etc。但没有成功。
非常感谢
编辑:我上面使用的语句是错误的,所以不要使用它!
【问题讨论】:
-
尝试编辑您的问题并输入使用
join的查询。 -
这是同一个问题吗? - stackoverflow.com/questions/20215744/…
-
@KenanZahirovic,不,不完全是,我想要链接到所有选择的产品,而不是树节点本身。我的 TreeNodes 有一个额外的 col 命名类型!
-
@GordonLinoff 是对的,使用连接查询
-
@GordonLinoff,这实际上是我的问题,怎么样?
标签: mysql sql join categories hierarchy