【问题标题】:mysql - How to perform joining of of two junctional tables in case where one of them has foreign key of another?mysql - 如果其中一个具有另一个外键,如何执行两个联结表的连接?
【发布时间】:2019-02-09 01:34:07
【问题描述】:

我是数据库设计的新手,所以我还在学习,很抱歉可能使用不恰当的术语,所以我会尝试用通用语言解释我遇到的问题。我学会了如何在中间的联结表上连接两个表(得到结果),但是当我想在另一个联结表上加入一个“常规”表和一个联结表时,我遇到了问题。

我有一个关系数据库,它有这样的表和它们之间的关系:

我知道如何使用hgs_translations 加入hgs_transliterationshgs_gardinershgs_meaningshgs_word_types,但我不知道如何加入这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】:

    只需再添加两个连接:

    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
    

    【讨论】:

    • 1) 我没有 hgs_translation_reference 表(您的意思可能是 junc_translation_reference)。 2) 你是故意离开 junc_translation_reference 没有 .reference_id,还是没有?
    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 2015-02-13
    • 1970-01-01
    • 2011-01-11
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    相关资源
    最近更新 更多