试图尽可能最好地解释这一点:
首先,我有一个名为vocabulary
的表
+-----+---------------------+
| id | name |
+-----+---------------------+
| 1 | Farming |
| 2 | Agriculture |
| 3 | Design |
| 4 | Graphic Design |
| 5 | Interactive Design |
| 6 | Animal Husbandry |
| ... | ... |
| 887 | Carpentry |
+-----+---------------------+
在excel表中,我列出了“相关词汇表”,这些项目可能如下所示:
Interactive Design Farming
-------------------- --------------------
Graphic Design Agriculture
Design Animal Husbandry
我想要做的是创建一个名为vocabulary_relations
的表,并在头(在上面的excel工作表示例中)与它下面的每个项之间创建关系。例如,Interactive将指向平面设计和设计。农业将指向农业和畜牧业。
例如,该表看起来如下(使用vocabulary
表作为引用):
+----------------+--------------+
| vocabulary_id | related_id |
+----------------+--------------+
| 5 | 4 |
| 5 | 2 |
| 1 | 2 |
| 1 | 6 |
+----------------+--------------+
这样,我就可以为任何related_id
提取所有的vocabulary_id
。
例如,如果我请求vocabulary_id = 1
(农业),它将返回related_id => 2, 6
(分别为农业、畜牧业)。
,有人对如何自动化这样的事情有什么想法吗?我不是在找用户界面,这是静态数据。。
谢谢!
发布于 2011-07-28 15:22:00
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
发布于 2011-07-28 16:18:05
你考虑过这样的事吗?(至少假定vocabulary.name上有唯一的约束。)
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');
这样做了,选择是非常简单的。
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进口非常简单。
https://stackoverflow.com/questions/6861376
复制相似问题