首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在mysql中创建关系表

在mysql中创建关系表
EN

Stack Overflow用户
提问于 2011-07-28 15:16:13
回答 2查看 1.1K关注 0票数 1

试图尽可能最好地解释这一点:

首先,我有一个名为vocabulary的表

代码语言:javascript
运行
复制
+-----+---------------------+
| id  |  name               |
+-----+---------------------+
|  1  |  Farming            |
|  2  |  Agriculture        |
|  3  |  Design             |
|  4  |  Graphic Design     |
|  5  |  Interactive Design |
|  6  |  Animal Husbandry   |
| ... |          ...        |
| 887 |  Carpentry          |
+-----+---------------------+

在excel表中,我列出了“相关词汇表”,这些项目可能如下所示:

代码语言:javascript
运行
复制
Interactive Design                       Farming
--------------------                     --------------------
Graphic Design                           Agriculture
Design                                   Animal Husbandry

我想要做的是创建一个名为vocabulary_relations的表,并在头(在上面的excel工作表示例中)与它下面的每个项之间创建关系。例如,Interactive将指向平面设计和设计。农业将指向农业和畜牧业。

例如,该表看起来如下(使用vocabulary表作为引用):

代码语言:javascript
运行
复制
+----------------+--------------+
| vocabulary_id  |  related_id  |
+----------------+--------------+
|       5        |       4      |
|       5        |       2      |
|       1        |       2      |
|       1        |       6      |
+----------------+--------------+

这样,我就可以为任何related_id提取所有的vocabulary_id

例如,如果我请求vocabulary_id = 1 (农业),它将返回related_id => 2, 6 (分别为农业、畜牧业)。

,有人对如何自动化这样的事情有什么想法吗?我不是在找用户界面,这是静态数据。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-28 15:22:00

代码语言:javascript
运行
复制
INSERT INTO vocabulary_relations
    (vocabulary_id, related_id)
    SELECT v1.id, v2.id
        FROM RelatedItems ri
            INNER JOIN vocabulary v1
                ON ri.col1 = v1.name
            INNER JOIN vocabulary v2
                ON ri.col2 = v2.name
票数 2
EN

Stack Overflow用户

发布于 2011-07-28 16:18:05

你考虑过这样的事吗?(至少假定vocabulary.name上有唯一的约束。)

代码语言:javascript
运行
复制
create table vocabulary_relations (
  vocabulary_category varchar(35) not null,  -- references vocabulary (name), 
  related_vocabulary varchar(35) not null,   -- references vocabulary (name), 
  primary key (vocabulary_category, related_vocabulary)
);

insert into vocabulary_relations values
('Interactive Design','Graphic Design'),
('Interactive Design','Design'),
('Farming','Agriculture'),
('Farming','Animal Husbandry');

这样做了,选择是非常简单的。

代码语言:javascript
运行
复制
select * 
from vocabulary_relations
order by vocabulary_category, related_vocabulary;

vocabulary_category    related_vocabulary
--
Farming                Agriculture
Farming                Animal Husbandry
Interactive Design     Design
Interactive Design     Graphic Design

没有加入。易于理解和排除故障。从CSV进口非常简单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6861376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档