mysql - 如何将子类别与数据库中的字段关联起来?

标签 mysql database mapping e-commerce keyword

我正在创建一个 MySQL 数据库。我有一个名为产品名称的列。该产品有一个主要类别。然而,它可以属于n个子类别。我需要将这些子类别映射到该产品。我怎样才能做到这一点?

表1 - 产品信息
列 - ID名称MainCategorySubCategory(不确定)

表2 - MainCategory
列 - ID名称

表3 - 子类别
列 - ID名称

表 1 与表 2 具有 1 对 1 的关系。 如何将表1映射到表3?我这样做错了吗?

想法:我想这样做,以便每当我单击网站上的任何子类别名称时,我都会得到该类别下所有产品的列表。就像在线商店网站中发生的情况一样。

示例:外部硬盘驱动器产品将属于计算机配件。但我想为其指定子类别,例如 offer_running500GBSomeCompanyNameblack 等。

希望我解释了我的问题。请帮助我设计数据库。我已经掌握了 DBMS 的所有基础知识,但我不知道如何涉及关键字以及如何在数据库中存储和映射它们。

最佳答案

下面的结构怎么样:

表1 - 产品信息
列 - ID名称Main_Category_ID

表2 - 类别
列 - ID名称

表3 - Product_Category
列 - IDProduct_IDCategory_ID名称

然后您可以使用以下查询来获取所有信息:

SELECT p.*, c.Name 
FROM [Product Info] p
INNER JOIN Product_Category pc ON p.ID = pc.Product_ID
INNER JOIN Category c ON pc.Category_ID = c.ID

请注意,在Product Info 表中,我添加了一个Main_Category_ID 字段。如果您确实需要确定主要类别,那么这会起作用:

SELECT p.ID, p.Name, NULL AS MainCat, c.Name AS SubCat
FROM [Product Info] p
INNER JOIN Product_Category pc ON p.ID = pc.Product_ID
INNER JOIN Category c ON pc.Category_ID = c.ID
UNION 
SELECT p.ID, p.Name, c.Name AS MainCat, NULL AS SubCat
FROM [Product Info] p
INNER JOIN Category c ON p.Main_Category_ID = c.ID

关于mysql - 如何将子类别与数据库中的字段关联起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24121238/

相关文章:

MySQL 添加计数以作为列进行查询

ruby-on-rails - 用于 postgresql 的 Ruby on Rails : How can I edit database. yml?

sql - 计算跨越多个日期范围的记录

java - 根据多列的比较在数据库中创建列

php - 如何通过检查行是否存在来执行 Mysql Union?

sql - MySQL 存储过程 : variable in WHERE clause?

mysql - 如何在Mysql中按天计数

git - 作者未映射到 bitbucket 用户

algorithm - 以唯一且确定的方式将两个整数映射到一个整数

java - 在多列上使用投影 - 连接表