我正在使用一个配置系统,该系统将在 mysql 数据库中保存各种平台的一些参数。表格是这样的settings(id, desc, value), settings_overrides(id, settings_id, value, platform_id), platform (id, platform_key, platform_desc)。
我正在寻找的是一种从设置中获取所有值的方法,并且只有那些来自重写的值,其中 platofrm_key = to 'some vlaue'
所以我想出了连接,只是不确定将它们组合在一起的最佳方式。在这一点上,我能够得到的只是所有表中的值都是 platform_key='some value' 但这不是我想要的。有什么想法吗?
提前致谢。
最佳答案
其中一种方法是在 SELECT 中使用 LEFT JOIN 和 CASE 语句。例如:
select
id,
desc,
case so.value when NULL then s.value else so.value end case as setting_value
from settings s
left join settings_overrides so on so.settings_id = s.id and platform_key = 'some value'
关于Mysql,Doctrine 1.2 一个复杂的 Join 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9082421/