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

57hvy0tb  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(397)

我在数据库设计方面是新手,所以我还在学习,所以很抱歉可能使用了不恰当的术语,所以我会尽量解释一下我在公共语言上有什么问题。我学习了如何在中间的连接表上连接两个表(获取结果),但当我想在另一个连接表上连接一个“常规”表和一个连接表时遇到了问题。
我有一个关系数据库,它有如下表和表之间的关系:

我知道怎么加入 hgs_transliterations , hgs_gardiners , hgs_meanings , hgs_word_types 使用 hgs_translations ,但我不知道如何将这4个表和 hgs_references table。
这是我连接下面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

我读了一些关于这个问题的教程,其中提到 AS , INNER JOIN , OUTER JOIN ,但我不太了解术语以及如何使用它来创建我需要的内容。对不起,可能是一些基本的问题,但正如我所说,我只是一个初学者,我正在努力深入地理解一些东西,以便我能恰当地使用它。先谢谢你。
p、 如果有人认为这不是一个好的数据库设计(表之间关系的设计),我想听听这个。

fd3cxomn

fd3cxomn1#

只需再添加两个连接:

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

相关问题