Это довольно просто, на самом деле. Просто объедините каждую из четырех таблиц, соединив первичный ключ каждого из них со своим аналогом внешнего ключа в следующей таблице. Затем вы можете ссылаться на поля, которые вы хотите в вашем предложении SELECT.
SELECT u.first_name, u.last_name, tof.type_of_fav
FROM users u
JOIN user_favorite uf ON u.user_id = uf.user_id
JOIN favorites f ON uf.fav_id = f.fav_id
JOIN types_of_fav tof on f.type_of_fav_id = tof.type_of_fav_id
Это хорошая идея, чтобы настроить сокращения имен таблиц, как у меня здесь. Вам не нужно этого делать, но с ним проще и проще работать. Если вы этого не сделаете, вы должны указать полное имя таблицы, чтобы избежать двусмысленности в ссылках на поля: например, JOIN user_favorite on users.user_id = user_favorite.user_id
. Это становится довольно многословно.
Если вы не включите таблицы при обращении к полям, анализатор не будет знать, на какое поле вы ссылаетесь, поскольку имена ваших полей не уникальны во всей вашей схеме. Таким образом, вы получите неоднозначную ошибку ссылки на поле.