【发布时间】:2011-07-13 20:50:33
【问题描述】:
于是就有了这个数据库表:
还有这个带有选定选项的数组:
$options[1] = 1;
$options[2] = 5;
$options[3] = 3;
$options[4] = 2;
$options[5] = 1;
...
$options[x] = y;
现在,我们的目标是获取所有 item_id,如果它的行中有来自 options 数组的键之一的 option_id,则该值必须与 options 数组中的值相同。
例如:
选项 1 已选择值 1
选项 2 选择了值 5
选项 3 选择了值 4
选项 4 选择了值 2
所以我们应该选择 item_id 1 和其他 item_id,其中 if option 1 -> option 1 = 1 AND if option 2 -> option 2 = 5 AND if option 3 -> option 3 = 4 AND ...
item_ids 将在 IN() 中用于从 items 表中选择 items 数据。
主要是用户在页面上选择了一些选项,然后将选项放入数组中,然后我必须找到所有符合所选选项的项目。在上表中,我们有项目和选项之间的关系,以及每个项目的预定义选项值。
【问题讨论】:
-
如果我理解正确你只需要使用
DISTINCT,即SELECT DISTINCT item_id FROM ... -
不是真的,如果行具有该选项 ID,我需要找到符合一个或多个选定选项值的所有行。
DISTINCT也将被使用,但我怎样才能使选择符合一个或多个 where 子句?我尝试使用IF( option_id = 1, option_value, 'xxx' ) = 1,但是当我用 AND 放置更多 IF 时,没有选择任何内容。 -
option_value是外键还是实际值? -
option_value是实际值。应该等于对应数组行的值$options[id] = value