项目表
id category_id item_title
1 2 Seagate SSHD
2 3 Seagtate 2.5 inch HDD
3 4 Western Digital 3.5 inch HDD
4 4 Toshiba 3.5 inch HDD
5 5 Generic Used Monitor
6 6 ASUS Monitor
类别表
id parent_id category_title
1 0 Hardware
2 1 Hard Disks
3 2 Laptop Hard Disk
4 2 Desktop Hard Disk
5 1 Monitor
6 5 LCD Monitor
视觉:
-- Laptop Hard Disk
-- Hard Disks |
Harware-| -- Desktop Hard Disk
-- Monitors -- LCD Monitor
查询:
SELECT * FROM items_table p
JOIN categories_table cp ON p.category_id = cp.id
JOIN categories_table cc ON cp.parent_id = cc.id
WHERE cc.id = "1"
输出
id category_id item_title
1 2 Seagate SSHD
5 5 Generic Used Monitor
但是我也在尝试从所有子类别中获取商品,即1.要求父类别时,必须显示父类别,子类别和孙子类别中的所有内容2.要求儿童类别时,必须显示儿童及其子女(孙子女)的所有内容
期望;当要求类别1(硬件)时]
id category_id item_title
1 2 Seagate SSHD
2 3 Seagtate 2.5 inch HDD
3 4 Western Digital 3.5 inch HDD
4 4 Toshiba 3.5 inch HDD
5 5 Generic Used Monitor
6 6 ASUS Monitor
当要求提供类别2(硬盘)时>]
id category_id item_title 1 2 Seagate SSHD 2 3 Seagtate 2.5 inch HDD 3 4 Western Digital 3.5 inch HDD 4 4 Toshiba 3.5 inch HDD
如何修改查询以从类别及其子类别中获取所有项目?
项目表ID category_id item_title 1 2 Seagate SSHD 2 3 Seagtate 2.5英寸硬盘3 4 Western Digital 3.5英寸硬盘4 4 Toshiba ...
我必须警告id
-parentId
方法(称为邻接表)不适用于任意级别的嵌套。但是,如果您知道它将仅是3层,那就顺其自然。否则,请查看诸如嵌套表或实体化路径之类的替代方法。