UPDATE:
因为我已经意识到我的方式在做,这是最理想的,可能永远都工作正常,而现在使用的是两个表,而不是三个,这似乎工作。挑战:MySQL用户表的默认设置
欢迎您回答如果您有解决方案,但只有在他们遇到类似问题时才能帮助他人。
我有一个与uid,名称和基本信息的用户表。我有一个设置表与sid,设置的名称和设置的默认值。
我还有一个users_settings表,其中包含sid,uid和value,将用户设置链接到设置名称和用户名称。
在一个查询中,我将如何选择一个用户,并通过设置表“循环”,选择user_settings中的用户设置(如果存在),或者该设置的默认值(如果不存在),对于每个设置?
最好每个设置都将作为列出现在结果集中(列的名称是设置的名称,值是设置的值)。
在那不知所云的情况下,这里有一个例子:
用户表:
uid name email
1 Maria [email protected]
4 George [email protected]
设置表:
sid name default_value
1 uicolour #f00
2 language en
users_settings表:
uid sid value
4 1 #000
1 2 es
德从MySQL查询结果首创的UID 4:
uid name email setting_colour setting_language
4 George [email protected] #000 en
从MySQL查询UID 1
期望的结果:
uid name email setting_colour setting_language
1 Maria [email protected] #f00 es
谢谢! :)
你尝试过什么码? – JohnP 2012-07-06 17:02:46
嗯,我已经试过左和内部联接,但我能得到的是设置,如果它存在。我想不出有什么办法可以将默认设置合并到结果中。我想在查询中需要一些循环和测试。 我想我可以让注册表单将值放入并弃用default_value。它会重复大量的数据。 – felamaslen 2012-07-06 17:03:31
我的意思是,你可以将你试过的查询添加到你的答案中,你可能会很近,只需要调整。 – JohnP 2012-07-06 17:05:20