mysql - 如果其中一个具有另一个的外键,如何执行两个联结表的连接?

问题描述 投票:0回答:1

我是数据库设计的新手,所以我还在学习,很抱歉使用不合适的术语,所以我会尝试用共同语言解释我有什么问题。我学会了如何将两个表(获取结果)连接到中间的连接表上,但是当我想要将一个“常规”表和一个连接表连接到另一个连接表上时,我遇到了问题。

我有一个关系数据库,它们之间有表和关系,如下所示:

Relational database design

我知道如何使用hgs_transliterations加入hgs_gardinershgs_meaningshgs_word_typeshgs_translations,但我不知道怎么做是如何加入这4个表和hgs_references表。

这是我加入低4个表的代码:

SELECT hgs_transliterations.transliteration, hgs_gardiners.gardiners_code, hgs_meanings.meaning, hgs_word_types.word_type
FROM hgs_translations
JOIN hgs_transliterations ON hgs_translations.transliteration_id = hgs_transliterations.id
JOIN hgs_gardiners ON hgs_translations.gardiners_id = hgs_gardiners.id
JOIN hgs_meanings ON hgs_translations.meaning_id = hgs_meanings.id
JOIN hgs_word_types ON hgs_translations.word_type_id = hgs_word_types.id

我读了一些关于这个主题的教程,其中提到了ASINNER JOINOUTER JOIN,但我并不完全理解术语以及如何使用它来创建我需要的东西。对不起,也许是基本的问题,但正如我所说的,我只是一个初学者,我正在努力深入理解,所以我可以适当地使用它。先感谢您。

附:如果有人认为这不是好的数据库设计(表格之间的关系设计),我想听听。

mysql database-design relational-database junction-table
1个回答
1
投票

只需添加两个连接:

SELECT hgs_transliterations.transliteration, hgs_gardiners.gardiners_code, 
       hgs_meanings.meaning, hgs_word_types.word_type,
       hgs_references.reference
FROM hgs_translations
JOIN hgs_transliterations ON hgs_translations.transliteration_id = hgs_transliterations.id
JOIN hgs_gardiners ON hgs_translations.gardiners_id = hgs_gardiners.id
JOIN hgs_meanings ON hgs_translations.meaning_id = hgs_meanings.id
JOIN hgs_word_types ON hgs_translations.word_type_id = hgs_word_types.id    
JOIN junc_translation_reference ON junc_translation_reference.translation_id = hgs_translations.id
JOIN hgs_references ON hgs_references.id = junc_translation_reference.reference_id
© www.soinside.com 2019 - 2024. All rights reserved.