在MYSQL中操作外键输出


Manipulating Foreign Keys output in MYSQL

我有一个表通过外键连接到另一个表;

  1. 第一张表为品牌;它有一个brand_id和brand_name字段
  2. 第二表为产品线;它有Line_id和line_name字段
  3. 第三表是提供的线路;它有id、Brand(来自第一个表的外键)和Line_name(来自第二个表的外键)。

如果我将查看mysql上的第三个表,其中字段包含外键的id号。

我的问题是,是否有可能存储的值将是名称本身,而不是ID?或者是否可以在我的第三个表上添加一个名为Brand_name的字段,这是一个VARCHAR,将显示第一个表中的确切品牌名称。例如,我的第三个表的值是'1','3',' Brand Name of Brand with id no. '。3 ', ' 25 ';-如果是,我不知道该怎么做

没有什么可以阻止你这样做。您只需将brand_name字段添加到"第三个表"中……需要问的问题是:你为什么要这样做?

brands
_________________________
| brand_id | brand_name |
|     1    |   brand1   |
|     2    |   brand2   |
|     3    |   brand3   |
|     4    |   brand4   |
|     5    |   brand5   |
-------------------------

lines
_________________________
| line_id  | line_name  |
|     1    |   line1    |
|     2    |   line2    |
|     3    |   line3    |
|     4    |   line4    |
|     5    |   line5    |
-------------------------

linked
_________________________________________________
|    id    |  line_id   | brand_id | brand_name |
|     1    |     5      |     1    |   brand1   |
|     2    |     5      |     2    |   brand2   |
|     3    |     4      |     2    |   brand2   |
|     4    |     4      |     3    |   brand3   |
|     5    |     4      |     3    |   brand3   |
|     6    |     3      |     4    |   brand4   |
|     7    |     3      |     4    |   brand4   |
|     8    |     2      |     4    |   brand4   |
|     9    |     2      |     5    |   brand5   |
|     10   |     1      |     5    |   brand5   |
------------------------------------------------

这是你建议的设置。现在如果我们:

SELECT brand_id, brand_name FROM linked WHERE line_id = 4;

我们将得到:

_________________________
| brand_id | brand_name |
|     2    |   brand2   |
|     3    |   brand3   |
|     3    |   brand3   |
-------------------------

但是同样可以在没有重复数据的情况下实现(在大型数据库中,这样的重复数据是非常不合理的),并且不需要在每次品牌名称更改时使用:

来更新链接表和品牌表。
SELECT linked.brand_id, brands.brand_name 
FROM brands, linked
WHERE linked.line_id = 4 AND brands.brand_id = linked.brand_id;
_________________________
| brand_id | brand_name |
|     2    |   brand2   |
|     3    |   brand3   |
|     3    |   brand3   |
-------------------------

这个答案不需要那么长。我玩得很开心。