我有两个表:一个包含产品,第二个包含类别。我希望能够按类别进行搜索,以便在父类别中搜索时,它将搜索父类别和子类别。搜索类别和子类别
我的目标: 请在“汽车”的搜索将>>雪佛兰搜索和丰田
我怎样才能实现这个结果?
mysqli_query($conn,"select * from cat where parent=''");
我有两个表:一个包含产品,第二个包含类别。我希望能够按类别进行搜索,以便在父类别中搜索时,它将搜索父类别和子类别。搜索类别和子类别
我的目标: 请在“汽车”的搜索将>>雪佛兰搜索和丰田
我怎样才能实现这个结果?
mysqli_query($conn,"select * from cat where parent=''");
既然你没有表现出你的表结构,我锣做出一些猜测。我也希望这个答案不是太简单,但没有更多的继续,似乎你正在寻找基本的想法。
假设您的示例中的“cars”在类别表中,“chevrolet”和“toyota”在产品表中,那么您需要在产品表中指定另一个栏,说明每个产品的类别。
所以如果你有一个类别表所示:
cat_id | cat_name
-----------------
1 | cars
2 | appliances
,你有一个产品表所示:
product_id | product_name | cat_id
----------------------------------
1 | chevrolet | 1
2 | kitchenaid | 2
3 | toyota | 1
重要的是,在产品表中的每个项目都有一个参考类别是什么。这就是关系数据库所做的:它们提供了一种显示不同实体之间关系的方式。
然后得到的所有产品类别中的“车”的列表,你只需要在适当的类别来选择的:
SELECT product_name from products WHERE cat_id = 1;
如果您还希望包括从类别表信息在你的结果,你可以加入表:
SELECT product_name, cat_name from products
JOIN categories ON products.cat_id = categories.cat_id
WHERE categories.cat_id = 1
这将让你的结果:
product_name | cat_name
------------------------
chevrolet | cars
toyota | cars
在某些情况下,将类别和产品放在同一个表格中是有意义的(例如,如果您想要具有任意深度值的树,例如'雪佛兰'是父'volt','impala'等)。
同样的查询仍然有效,但现在你本身加入表(我使用基于下面的评论列名):
SELECT child.name, parent.name
FROM products AS parent
JOIN products AS child ON parent.id = child.parent
WHERE parent.id = 1
这将让你几乎相同的结果如上。虽然它是连接到它自己的同一张表,但我使用AS来区分这两个引用。
亲爱的杰里 我有类别表https://i.stack.imgur.com/f6cI1。png 我需要做搜索引擎,当我在父类别中搜索父类别 –
的子类别时,确定,假设有类别和产品在同一个表中的原因,查询实际上没有太大变化。不同之处在于,不是将两个表连接在一起,而是将自己与表连接起来。我会在我的回答中加入一个快速补充。 – Jerry
亲爱的 这项工作选择的类别,但我想进行选择和搜索,当我选择主要类别搜索将运行在此 的所有子类别上我试图做到这一点,但没有机会 –
请参阅http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry