多对多mysql查询
我正在尝试创建一个结构化的数据库,这样我就可以进行一次查询并获得所需的所有数据 这就是我现在的结构:多对多mysql查询,mysql,sql,Mysql,Sql,我正在尝试创建一个结构化的数据库,这样我就可以进行一次查询并获得所需的所有数据 这就是我现在的结构: Products Subcategory Category ------------- ------------- ------------- | id | name | | id | name | | id | name | 对我来说,创建两个关系表将产品与子类别以及子类别与类别(使其具有层次结构)联系起来是有意义的: 因此,产品可以分为多个子类别,子类别告诉我们产
Products Subcategory Category
------------- ------------- -------------
| id | name | | id | name | | id | name |
对我来说,创建两个关系表将产品与子类别以及子类别与类别(使其具有层次结构)联系起来是有意义的:
因此,产品可以分为多个子类别,子类别告诉我们产品属于哪个类别
使用这种结构,如果我想找到所有具有类别id
的产品,我必须查询sub\u cat\u关系
表,然后获取该数组并对prod\u sub\u关系
表进行另一次查询(这太混乱了)
我的目标是用一个id查找所有产品、所有类别或所有子类别(无论是产品id
、类别id
、还是子类别id
)
这可能吗?或者我在这里做错了什么?将每个产品的类别放入一个数组中,序列化数组,并将其存储在数据库中…正如@har07已经提到的,您可以在这个数组中使用一个简单的
连接。
我不太清楚你们桌子结构的其他细节,但是
我将根据您目前提供的内容向您展示:
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
要获取给定类别ID的产品
和子类别
,只需更改WHERE
子句,如:
WHERE C.cat_id = ValueForCategoryIDhere
WHERE S.subcat_id = ValueForSubCategoryIDhere
要获取给定子类别ID的产品
和类别
,只需更改WHERE
子句,如:
WHERE C.cat_id = ValueForCategoryIDhere
WHERE S.subcat_id = ValueForSubCategoryIDhere
您应该检查sql中的“JOIN”操作。使用join,可以使这3个表像一个表一样连接起来,其中包含3个表中的所有列。因此,您可以通过一个查询从3个表中获取所需的所有数据。也许是可以帮助你开始学习-我是新来的-有没有关于我目前的结构的例子。如果我有分类ID呢?我如何加入表格以获得所有子类别或所有产品?很高兴@tonylefler为您提供帮助。上帝保佑,快乐编码!