MySQL查询帮助->多个WHERE子句?
我有如下所示的数据库表 我想做的是通过代理id获取配色方案的所有记录,其中配色方案的配色方案中,配色方案1、配色方案2、配色方案3、配色方案4、配色方案5与用户的用户配色方案1、用户配色方案2或用户配色方案3的任何条目匹配 基本上,用户是由代理注册的,然后指定他们喜欢的颜色。商业用户自己注册的配色方案,决定了他们适合什么颜色。我需要找到,对于某个特定的代理商,是否有任何配色方案的颜色适合用户选择的任何颜色MySQL查询帮助->多个WHERE子句?,mysql,sql,Mysql,Sql,我有如下所示的数据库表 我想做的是通过代理id获取配色方案的所有记录,其中配色方案的配色方案中,配色方案1、配色方案2、配色方案3、配色方案4、配色方案5与用户的用户配色方案1、用户配色方案2或用户配色方案3的任何条目匹配 基本上,用户是由代理注册的,然后指定他们喜欢的颜色。商业用户自己注册的配色方案,决定了他们适合什么颜色。我需要找到,对于某个特定的代理商,是否有任何配色方案的颜色适合用户选择的任何颜色 ---------------------- agents ---------------
----------------------
agents
----------------------
agent_id | agent_name
--------- | ----------
1 | Rod
2 | Jane
3 | Freddy
------------------------------------------------------------------------------
users
------------------------------------------------------------------------------
user_id | agent_id | user_name | user_colour_1 | user_colour_2 | user_colour_3
------- | -------- | --------- | ------------- | ------------- | -------------
1 | 1 | Andy | 1 | 2 | 3
2 | 2 | Betty | 2 | 1 | 5
3 | 3 | Claire | 3 | 1 | 6
4 | 1 | Derek | 4 | 5 | 7
5 | 1 | Eric | 1 | 6 | 2
6 | 2 | Fay | 2 | 7 | 3
7 | 3 | Gary | 3 | 1 | 7
------------------------------------------------------------------------------
----------------------------------------------------------------
colourschemes
----------------------------------------------------------------
scheme_id | colour_1 | colour_2 | colour_3 | colour_4 | colour_5
--------- | -------- | -------- | -------- | -------- | --------
1 | 1 | 2 | 3 | 5 | 7
2 | 2 | 3 | 5 | 1 | 4
3 | 3 | 6 | 7 | 2 | 4
4 | 4 | 3 | 1 | 7 | 2
5 | 5 | 6 | 7 | 2 | 3
6 | 6 | 5 | 1 | 4 | 3
7 | 7 | 3 | 6 | 1 | 2
-----------------------
colours
-----------------------
colour_id | colour_name
--------- | -----------
1 | red
2 | yellow
3 | blue
4 | green
5 | orange
6 | purple
7 | black
好的,很抱歉耽搁了这么久,这里是想要的结果
------------------------------------------
results table
------------------------------------------
agent_id | user_id | scheme_id | colour_id
------------------------------------------
1 | 1 | 1 | 1
1 | 1 | 1 | 2
1 | 1 | 1 | 3
1 | 1 | 2 | 2
1 | 1 | 2 | 1
1 | 1 | 2 | 3
1 | 1 | 3 | 3
1 | 1 | 3 | 2
1 | 1 | 4 | 3
1 | 1 | 4 | 1
1 | 1 | 4 | 2
1 | 1 | 5 | 2
1 | 1 | 5 | 3
1 | 1 | 6 | 1
1 | 1 | 6 | 3
1 | 1 | 7 | 3
1 | 1 | 7 | 1
1 | 1 | 7 | 2
1 | 4 | 1 | 5
1 | 4 | 1 | 7
1 | 4 | 2 | 5
1 | 4 | 2 | 4
1 | 4 | 3 | 7
1 | 4 | 3 | 4
1 | 4 | 4 | 4
1 | 4 | 4 | 7
1 | 4 | 5 | 5
1 | 4 | 5 | 4
1 | 4 | 6 | 5
1 | 4 | 6 | 4
1 | 4 | 7 | 7
1 | 5 | 1 | 1
1 | 5 | 1 | 2
1 | 5 | 2 | 2
1 | 5 | 2 | 1
1 | 5 | 3 | 6
1 | 5 | 3 | 2
1 | 5 | 4 | 6
1 | 5 | 4 | 2
1 | 5 | 5 | 6
1 | 5 | 5 | 1
1 | 5 | 6 | 1
1 | 5 | 6 | 2
1 | 5 | 7 | 6
1 | 5 | 7 | 1
1 | 5 | 7 | 2
您要查找的是这样一个复杂的where子句
SELECT
u.agent_id,
u.agent_name
from
users u,
colourschemes c
where
u.user_colour_1 = c.scheme_id
or u.user_colour_2 = c.scheme_id
or u.user_colour_3 = c.scheme_id
and c.colour_1 = "blue"
and c.colour_2 = "purple"
and c.colour_3 = "black"
and c.colour_4 = "yellow"
and c.colour_5 = "green" ;
好的,只是为了跟进,这里是来自另一个建议源的建议代码
SELECT u.user_id
, u.agent_id
, s.scheme_id
, u.user_colour_1 AS user_colour
FROM users u
INNER JOIN colourschemes ON (u.user_colour_1 = s.colour_1 OR u.user_colour_1 = s.colour_2 OR u.user_colour_1 = s.colour_3 OR u.user_colour_1 = s.colour_4 OR u.user_colour_1 = s.colour_5)
UNION ALL
SELECT u.user_id
, u.agent_id
, s.scheme_id
, u.user_colour_2 AS user_colour
FROM users u
INNER JOIN colourschemes ON (u.user_colour_2 = s.colour_1 OR u.user_colour_2 = s.colour_2 OR u.user_colour_2 = s.colour_3 OR u.user_colour_2 = s.colour_4 OR u.user_colour_2 = s.colour_5)
UNION ALL
SELECT u.user_id
, u.agent_id
, s.scheme_id
, u.user_colour_3 AS user_colour
FROM users u
INNER JOIN colourschemes ON (u.user_colour_3 = s.colour_1 OR u.user_colour_3 = s.colour_2 OR u.user_colour_3 = s.colour_3 OR u.user_colour_3 = s.colour_4 OR u.user_colour_3 = s.colour_5)
你能不能也列出一张你预期结果的表格?不清楚您在寻找什么。请阅读-stackoverflow.com/help/how-to-ask。正如@paqogomez所指出的,您需要包含更多的细节,而不是蓬松。你尝试过任何代码吗?这是非常广泛的,你要求有人为你创建一个完整的网站。或者,您是否正在就某个特定零件寻求帮助?如果找到了应列出的匹配项。因此,生成的表可能返回多个用户id,并且当用户的一个颜色选择与一个可用的配色方案匹配时,用户id可能会出现多次。请根据您当前的数据向我们展示一个示例。您需要在and或or逻辑周围添加括号。如前所述,这不会返回您期望的结果。我建议使用SQL92标准内部联接,而不是旧语法。感谢您的提示,我刚刚注意到我上面的db设计中的漏洞,即在ColorSchemes表中缺少用户\u color\u id引用。