Частая ситуация при проектировании таблиц MySQL — это использование таблиц связок, когда нужно связать поля двух таблиц с помощью третьей таблицы.

Разберем небольшой пример для понимания того, как это работает и как может нам пригодиться. Мне пришлось немного помучиться недавно с данным вопросом при создании одного сайта небольшой спортивной статистики.

Но для практики я приведу упрощенный пример использования INNER JOIN для трех простых таблиц.

Предположим, что у нас есть три таблицы, которые можно использовать для простого сайта статей с тегами.

  1. Первая таблица предназначена для статей.
  2. Вторая для Тегов к статьям.
  3. Третья для связи тегов и статей.

Третья таблица и будет нашей таблицей связкой основных двух страниц.

Первая наша таблица с видеоиграми (или статьями) будет такой:

idtitlereg_datecontent
1BioShock Infinite2016-08-08

Вторая таблица с тегами:

idname
1jennefer
2elizabeth

И третья таблица, которая определяет связь статей (видеоигр) и тегов:

post_idtag_id
12

Приведенный ниже код может вернуть все сообщения, связанные с тегом «elizabeth«:

SELECT videogame.id,
    videogame.title,
    videogame.reg_date,
    tags.name,
    tags_meta.post_id
FROM tags_meta
INNER JOIN videogame ON videogame.id = tags_meta.post_id
INNER JOIN tags ON tags.id = tags_meta.tag_id
WHERE tags.name = "elizabeth"
ORDER BY videogame.reg_date

В ближайших постах более подробно разберем INNER JOIN трех таблиц.

Статьи #