Я создаю модуль предпочтений для системы, чтобы пользователи могли определять свои собственные предпочтения для определенных частей (такие как макет, цветовая схема, домашний экран и т. Д.).Каждое предпочтение в таблице имеет значение по умолчанию (в случае, если пользователь еще не определил его), и как только пользователь изменил свои предпочтения, система должна использовать это пользовательское значение.
У меня проблемы с выбором нужного значения, мой запрос работает с определенным пользователем значением, но, к сожалению, он возвращает null
, когда пользователь еще не определил предпочтение.
У меня есть 2 таблицы
table **preferences**:
id
name
default_value
table **preferences_defined**:
id
preference_id
user_id
defined_value
Я хочу создать функцию, которая легко выберет нужное значение, указав user_id человека, к которому относится предпочтение, и имя предпочтения.В настоящий момент мой запрос выглядит следующим образом:
SELECT IF(ISNULL(defined_value),default_value,defined_value) AS result
FROM preferences
LEFT JOIN preferences_defined ON preferences_defined.id = preferences.id
WHERE user_id = 17
AND name = "menu_items"
Я думаю, что в части WHERE user_id = 17
все идет не так, потому что когда нет доступного определенного значения, это означает, что столбца с именем user_id также нет.Мне нужно найти способ сделать эту работу. Итак, мне нужно выбрать определенное значение, если оно существует (с учетом user_id
и name
предпочтения), если нет, оно должно будет вернуть значение по умолчанию.