выберите значение, если оно существует, или значение по умолчанию из другой таблицы - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть таблица пользовательских настроек - 'pr_gantt_config' и таблица значений по умолчанию для всех настраиваемых элементов диаграммы - 'pr_gantt'.Я надеялся, что этот запрос вернет либо пользователь, выразивший предпочтение, либо значение по умолчанию из pr_gantt для всех настраиваемых значений, но я получаю только те строки, в которых пользователь выразил предпочтение.Я знаю, что могу хранить значение для каждого пользователя для каждого значения, но это неэффективно.

    SELECT `code`, 
       `pref`, 
       `type`, 
       Ifnull(`pref`, `pr_gantt`.`default_value`) AS `pref` 
FROM   `pr_gantt_config` 
       LEFT JOIN `pr_gantt` 
              ON ( `pr_gantt_config`.`gantt_id` = `pr_gantt`.`id` ) 
WHERE  `pr_gantt_config`.`user_id` = '1' 

Ваша помощь очень ценится.

1 Ответ

0 голосов
/ 29 сентября 2018

Обходным решением будет сначала создать представление обеих таблиц.

CREATE VIEW temp AS
SELECT code, pref, type,pref, pr_gantt.default_value  FROM pr_gantt_config 
LEFT JOIN pr_gantt ON (pr_gantt_config.gantt_id = pr_gantt.id) WHERE 
pr_gantt_config.user_id = '1'

, а затем выбрать с помощью IFNULL

SELECT code,type, IFNULL(pref, pr_grannt.default_value) FROM temp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...