gpt4 book ai didi

php - Select item in join table 每个链接需要满足多组条件

转载 作者:行者123 更新时间:2023-11-29 03:02:07 25 4
gpt4 key购买 nike

我有一个结构设置,其中条件可以有多个值(OR 子句)并且必须满足所有条件(AND 子句),条件的数量是动态的并且可以随着每个查询增加或减少。

我想对 ItemsCondition_Values (items_values) 的连接表执行查找,其中一个 Item 满足所有条件。链接本身是从 ItemsCondition_Value 并且我正在对 SQL 进行预格式化以将 condition_value_ids 分组到适当的子句组中,如下所示:

(1 OR 5 OR 6 OR 9), (2 OR 10 OR 15), (9 OR 22 OR 33)

在某个时候一起进行 AND 操作。

我正在寻找一种方法来进行 SQL 查询,该查询选择一个不同的 Item_Id,其中满足所有条件,它链接到每个 condition_value_ids 中的至少一个组。

所以像这样的表:

ITEM_ID              CONDITION_VALUE_ID
1 1
1 5
1 10
1 22
1 33

2 5
2 9
2 55

3 9
3 15
3 22

会返回 ID 为 1 和 3 的 ItemS(因为项目 1/3 在每个条件组中至少匹配 1 个 condition_value_id 链接,所以 2 在每个组中没有至少 1 个匹配项)。我最好的猜测是像

这样的检查内部语句的巨大困惑
SELECT * FROM items_values 
WHERE EXISTS(
SELECT TOP 1 1 FROM items_values WHERE condition_value_id IN (1, 5, 6, 9))
) AND
.....

或者,我可以采用带有 item_id 的 condition_value_ids GROUP BY 的平面列表,并在 PHP 中手动进行搜索,但这似乎无法收集每个项目、每个搜索。

任何正确方向的建议将不胜感激。

编辑

像这样的东西(他们在下面的修改版本):

SELECT ITEM_ID,GROUP_CONCAT(CONDITION_VALUE_ID) AS VALUE_IDS, COUNT(CONDITION_VALUE_ID) FROM TEST
GROUP BY ITEM_ID
HAVING COUNT(CONDITION_VALUE_ID) > 1;

然后可以对每个 VALUE_IDS 执行 LIKE,或者只是执行 in_array 检查以匹配 PHP 中的每个条件,但我更希望它可以在查询中完成。

最佳答案

看看这个 SQL Fiddle .

您是在寻找查询提供的解决方案还是其他东西。

我的查询是:

SELECT ITEM_ID,
CONDITION_VALUE_ID,
GROUP_CONCAT(ITEM_ID) AS COMMON_ITEM_ID,
COUNT(CONDITION_VALUE_ID)
FROM ITEMS_VALUES
GROUP BY CONDITION_VALUE_ID
HAVING COUNT(CONDITION_VALUE_ID) > 1;

如果您有其他要求,请让我理解。

关于php - Select item in join table 每个链接需要满足多组条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21777552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com