Как выполнить объединение двух соединительных таблиц, если один из них имеет внешний ключ другого? - PullRequest
0 голосов
/ 04 сентября 2018

Я новичок в дизайне базы данных, поэтому я все еще учусь, поэтому извините за использование, возможно, неуместных терминов, поэтому я попытаюсь объяснить на общем языке, какая у меня проблема. Я узнал, как соединить две таблицы (получить результат) через промежуточную таблицу, но между ними возникла проблема, когда я хочу объединить одну «обычную» таблицу и одну таблицу соединений поверх другой таблицы соединений.

У меня есть реляционная база данных, в которой есть таблицы и отношения между ними, например:

Relational database design

Я знаю, как объединить hgs_transliterations, hgs_gardiners, hgs_meanings, hgs_word_types, используя hgs_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

Я прочитал несколько уроков по этой теме, в которых упоминаются AS, INNER JOIN, OUTER JOIN, но я не совсем понял терминологию и то, как я могу использовать это для создания того, что мне нужно. Извините за, может быть, основные вопросы, но, как я уже сказал, я только начинающий, и я пытаюсь понять что-то глубоко, чтобы я мог использовать это соответствующим образом. Заранее спасибо.

P.S. Если кто-то думает, что это не очень хороший дизайн базы данных (дизайн отношений между таблицами), я хотел бы услышать это.

1 Ответ

0 голосов
/ 04 сентября 2018

Просто добавьте еще два соединения:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...