我对编程很陌生,目前我正在尝试将主要类别+子类别显示为树。
已经创建了带有类别的菜单。现在,我想当我点击主类别名称加载所有产品的所有子类别分配给这个主要类别。问题是我不知道如何构造我的查询。
在我的表类别中,我存储了主猫和子猫。当我将子类别添加到某些主类别时,我会将主类别ID存储在parentID列下。
示例
ID Name parentID
426 Main Cat 0
427 sub-cat 426
428 sub-cat 2 426
429 Main cat 2 0products表有categoryID列
productID categoryID
1 427
2 428
3 429因此,当我点击maincatID=1时,它应该向我展示id 1和2的产品,因为它们被分配给sub-cat,后者被分配给主cat 1。
我试过的这个查询
$masterCategory = '426';
$query="SELECT * from products
LEFT JOIN categories on categories.categoryID = products.categoryID
WHERE products.categoryID in (" . $masterCategory ."0)";我应该得到两个产品时,我点击catid=426,因为我有两个产品添加到子程序,这是分配给catid=426 .产品1和2。
问题是,我有4-5空产品与NULL的一切。这不对。
Var_dump($query);返回
SELECT * from products
LEFT JOIN categories on categories.categoryID = products.categoryID
WHERE products.categoryID in (427,428,426,0)var_dump($masterCategory);返回
string(12) "427,428,426,"注意:我读过关于参数化查询的文章。为了测试目的,我在sql中添加了参数。
发布于 2016-12-05 14:34:42
尝试使用以下查询:
SELECT a.ID,c.productID,b.Name,b.parentID
FROM categories a JOIN categories b
ON(a.ID=b.parentID)
JOIN products c
ON(b.ID=c.categoryID)
WHERE a.ID=<catid>;卡蒂德是你必须要通过的主要身份。我已经用上面给出的数据模拟了这个结果,并且我得到了我预期的结果。
ID productID Name parentID
426 2 sub-cat 2 426
426 1 sub-cat 426发布于 2018-05-10 09:32:22
这应该能行
SELECT * from products
LEFT JOIN categories on categories.categoryID = products.categoryID
WHERE categories.categoryID = 426 OR categories.parendID=426;https://stackoverflow.com/questions/40975633
复制相似问题