【发布时间】:2011-06-26 01:32:38
【问题描述】:
我正在为系统制作首选项模块,以便用户可以为某些部分(如布局、配色方案、主屏幕等)定义自己的首选项。表中的每个首选项都有一个默认值(以防用户尚未定义),一旦用户更改了他们的首选项,系统应该使用该用户定义的值。
我在选择所需值时遇到问题,我的查询使用用户定义的值,但遗憾的是,当用户尚未定义首选项时,它会返回 null。
我有两张桌子
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 的首选项),如果不存在,它必须返回默认值。
【问题讨论】: