У меня есть следующие три таблицы:
шаблоны <-----> templatesubscription <-----> пользователь
table template:
id | name
table user
id | name | ...
table templatesubscriptions
id | template_id | user_id
- Каждый пользователь может иметь n шаблонных подписок .
- Каждая шаблонная подписка может иметь 1 user .
- Каждый шаблон имеет n шаблонных подписок .
- Каждая шаблонная подписка имеет 1 шаблон .
Теперь я хочу проверить, может ли текущий вошедший в систему пользователь (идентификатор пользователя = 10) редактировать шаблон с идентификатором = 0. Только если у пользователя есть подписка на этот шаблон, он может редактировать его.
Теперь я мог сделать 2 запроса. Сначала я получу подписку на шаблон текущего пользователя с идентификатором шаблона:
SELECT * FROM templatesubscription WHERE user_id = 10 AND template_id = 0
Теперь я могу проверить, является ли возвращаемое значение нулевым, если да, пользователь получит сообщение об ошибке. Если результат не пустой, я получу шаблон таблицы шаблонов:
SELECT * FROM templates WHERE id = 0
Но этот подход не кажется мне очень приятным. Могу ли я объединить оба утверждения в одном запросе? Возвращаемое значение должно быть шаблоном или нулевым, если у пользователя нет подписки на этот шаблон.