我有一个用户首选项表-'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'
非常感谢您的帮助。
答案 0 :(得分:0)
一项工作是首先创建两个表的视图。
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