У меня есть 3 таблицы, в которых хранятся пользователь, доступные настройки и пользовательские настройки. таблица Пользователь имеет стандартные вещи пользователя, как имя пользователя, пароль, имя, дату и т.д. таблица настроек содержит список всех доступных параметров системы и значения по умолчанию, как:Объединение 3 таблиц MySQL в 1 запрос
settingID name defaultValue
----------------------------------------------
1 push notifications 1
2 profile image 0
3 full name 1
4 distance measure Miles
настройки пользователя таблица содержит пользовательские настройки, установленные пользователь так:
userSettingID userID settingID customValue
----------------------------------------------------------
1 1 1 0
2 1 3 0
3 1 4 KM
Я пытаюсь сделать запрос, который будет присоединиться все 3 таблицы вместе, однако производят все результаты из таблицы параметров, и если есть совпадение в таблице UserSettings использовать customValue в противном случае используйте defaultValue из таблицы настроек.
Так что я хотел бы производить ниже:
userID settingID userSettingID name defaultValue customValue
---------------------------------------------------------------------------
1 1 1 push... 1 0
null 2 null profi.. 0 null
1 3 2 full... 1 0
1 4 3 dista.. Miles KM
Как вы можете видеть, что я хотел бы установить все параметры записи, и если результаты заполнения с идентификатором пользователя и/или customValue иначе заправить NULL.
Мне удалось получить желаемые результаты, но как только я добавляю предложение WHERE userID = x, я получаю только записи, на которые был установлен пользователь.
Благодаря
Edit: запрос я до сих пор является:
SELECT *
FROM settings
LEFT OUTER JOIN userSettings ON settings.settingID = userSettings.settingID
LEFT OUTER JOIN user ON userSettings.userID = user.userID
Измените свой вопрос и включите запрос, который вы написали. –