mysql - 如何查询零件列表,以便轻松比较来自多个不同组的零件?(数据透视表?)
问题描述
我有一个表格可以跟踪有关汽车的信息(对于这个例子来说)。每个条目都包含关于汽车上某个部分的描述。因此,例如,这是表数据片段的样子:
+-----+-----------+--------------+-------------+
| ID | ModelName | PartCategory | Description |
+-----+-----------+--------------+-------------+
| 1 | name1 | category1 | blah blah |
| 2 | name1 | category2 | blah blah |
| 3 | name2 | category2 | blah blah |
| 4 | name2 | category3 | blah blah |
| 5 | name2 | category4 | blah blah |
| ... | ... | ... | ... |
+-----+-----------+--------------+-------------+
有没有什么巧妙的方法来查询数据,让我可以更轻松地同时比较多个模型的数据?基本上我想一次比较多辆汽车的零件类别。不过,并非每辆车都有每个零件类别的记录,所以我希望在这些情况下使用空值。我正在尝试制作如下所示的东西:
+-----------+-------+--------+--------+-----+
| category | name1 | name2 | name3 | ... |
+-----------+-------+--------+--------+-----+
| category1 | Value | Value | Value | ... |
| category2 | Value | Value | Value | ... |
| category3 | Value | (null) | Value | ... |
| category4 | Value | Value | (null) | ... |
+-----------+-------+--------+--------+-----+
(Is this what you would call a table pivot?)
或者这个模式首先不适合这个目的?比较汽车模型是这个应用程序的主要目标,所以如果第一个截图中的表结构看起来是个坏主意,我会接受不同的模型。
解决方案
第一个表看起来不太正确,因为它最终会创建冗余数据。备用数据模型 - 使用如下数据模型创建 3 个表以填充数据。
表格1
┌───────────────────┬──────────────┬─────────────────┐ │ Table_Name │ Model_Config │ │ ├───────────────────┼──────────────┼─────────────────┤ │ Column_name │ Data_type │ Constraint │ ├───────────────────┼──────────────┼─────────────────┤ │ Model_Id │ number(5) │ PK │ ├───────────────────┼──────────────┼─────────────────┤ │ Model_Name │ varchar2(50) │ │ └───────────────────┴──────────────┴─────────────────┘
表 2
┌───────────────────┬────────────────────────────────┐ │ Table_Name │ PartCategory_Config │ ├───────────────────┼──────────────┬─────────────────┤ │ Column_name │ Data_type │ Constraint │ ├───────────────────┼──────────────┼─────────────────┤ │ PartCategory_Id │ number(5) │ PK │ ├───────────────────┼──────────────┼─────────────────┤ │ PartCategory_Name │ varchar2(50) │ │ └───────────────────┴──────────────┴─────────────────┘
表3
┌───────────────────┬────────────────────────────────┐ │ Table_Name │ Model_partCategory_link │ ├───────────────────┼──────────────┬─────────────────┤ │ Column_name │ Data_type │ Constraint │ ├───────────────────┼──────────────┼─────────────────┤ │ Model_Id │ number(5) │ │ ├───────────────────┼──────────────┤ │ │ PartCategory_Id │ number(5) │ Composite_PK │ └───────────────────┴──────────────┴─────────────────┘
我已根据您的表将查询上传到下面的 dbfiddle 链接,以获取现有数据模型以及对建议的数据模型更改的查询。您能否检查以下链接以获取解决方案,看看这是否适合您。
https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=c207dd2b71545ed787db0fb7ef65800a
推荐阅读
- java - 如何加载 org.springframework.jdbc.core.RowMapper 库
- c# - 为什么 Automapper 需要 IMapper 接口用于地图?
- java - Java mxGraph 中是否有可能限制单元格移动但不禁用它?
- javascript - 当间隔停止时,如何重构函数以返回承诺?
- excel - 如何使用“SUMPRODUCT”从两个不同类型的列中获取布尔结果?
- excel - excel 中高于平均值的数字 (SUM)
- java - 调用使用spring AOP封装的方法时出现HttpMessageNotWritableException
- javascript - JQuery 表单验证插件正则表达式(模式方法)问题
- python - Python beautifulsoup print 不打印整个 html 页面
- shell - awk 将多个文件中的特定列打印到新文件