繁体   English   中英

多对多对mysql查询

[英]many to many to many mysql query

我正在尝试创建一个结构化的数据库,以便可以进行一次查询并获取所需的所有数据。

这就是我现在的结构:

Products       Subcategory    Category
-------------  -------------  -------------
| id | name |  | id | name |  | id | name |

对我而言,创建两个关系表将产品与子类别相关联,并将子类别与类别相关联(使其成为分层结构)是很有意义的:

prod_sub_relation             sub_cat_relation
----------------------------  ---------------------------
| id | prod_id | subcat_id |  | id | subcat_id | cat_id |

因此该产品可以位于多个子类别中,并且该子类别告诉我们该产品属于哪个类别。

通过这种结构,如果我想查找所有带有category_id的产品,则必须查询sub_cat_relation表,然后采用该数组并再次查询prod_sub_relation表(这很麻烦)。

我的目标是查找所有具有一个ID(或者是product_idcategory_idsubcategory_id )的产品,所有类别或所有子subcategory_id

这可能吗? 还是我在这里做错了什么?

正如@ har07所提到的,您可以在此应用程序上使用简单的JOIN 我不确定表格结构的其他细节,但是我将根据您到目前为止提供的内容向您展示:

SELECT p.ID, p.Name, c.Name as CategoryName, s.Name as SubCategoryName
FROM Products P
INNER JOIN SubCategory S
ON P.subcat_id = S.subcat_id
INNER JOIN Category C
ON S.cat_id = C.cat_id

然后,您可以使用WHERE子句指定要显示的产品及其类别和子类别

SELECT P.ID, P.Name, C.Name as CategoryName, S.Name as SubCategoryName
FROM Products P
INNER JOIN SubCategory S
ON P.subcat_id = S.subcat_id
INNER JOIN Category C
ON S.cat_id = C.cat_id
WHERE P.ID = valuehereforyourID

要获取给定category IDProductsSubCategory category ID ,只需更改WHERE子句,例如:

WHERE C.cat_id = ValueForCategoryIDhere

要获取给定子Subcategory IDProductsCategory ,只需更改WHERE子句,例如:

WHERE S.subcat_id = ValueForSubCategoryIDhere

将每个产品的类别放入数组中,序列化数组,然后将其存储在数据库中...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM