[英]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_id
, category_id
或subcategory_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 ID
的Products
和SubCategory
category ID
,只需更改WHERE
子句,例如:
WHERE C.cat_id = ValueForCategoryIDhere
要获取给定子Subcategory ID
的Products
和Category
,只需更改WHERE
子句,例如:
WHERE S.subcat_id = ValueForSubCategoryIDhere
将每个产品的类别放入数组中,序列化数组,然后将其存储在数据库中...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.