如何查询零件清单,以便可以轻松比较许多不同组中的零件? (数据透视表?)

时间:2019-03-21 14:47:13

标签: mysql sql

我有一张表,该表跟踪有关(例如本例中)汽车的信息。每个条目都包含有关汽车上某个零件的描述。因此,例如,这是表数据的一段代码:

+-----+-----------+--------------+-------------+
| 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?)

这个模式是否首先对这个目的不利?比较汽车模型是此应用程序的主要目标,因此,如果一口砍掉第一张桌子的表结构似乎是个坏主意,那么我将接受其他模型。

1 个答案:

答案 0 :(得分:0)

第一个表看起来不太正确,因为最终将导致创建冗余数据。 备用数据模型-使用以下数据模型创建3个表以填充数据。

  1. 表1

    ┌───────────────────┬──────────────┬─────────────────┐
    │ Table_Name        │ Model_Config │                 │
    ├───────────────────┼──────────────┼─────────────────┤
    │ Column_name       │ Data_type    │ Constraint      │
    ├───────────────────┼──────────────┼─────────────────┤
    │ Model_Id          │ number(5)    │ PK              │
    ├───────────────────┼──────────────┼─────────────────┤
    │ Model_Name        │ varchar2(50) │                 │
    └───────────────────┴──────────────┴─────────────────┘
    
  2. 表2

    ┌───────────────────┬────────────────────────────────┐
    │ Table_Name        │ PartCategory_Config            │
    ├───────────────────┼──────────────┬─────────────────┤
    │ Column_name       │ Data_type    │ Constraint      │
    ├───────────────────┼──────────────┼─────────────────┤
    │ PartCategory_Id   │ number(5)    │ PK              │
    ├───────────────────┼──────────────┼─────────────────┤
    │ PartCategory_Name │ varchar2(50) │                 │
    └───────────────────┴──────────────┴─────────────────┘
    
  3. 表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