gpt4 book ai didi

MySQL:条件 WHERE block

转载 作者:行者123 更新时间:2023-11-29 06:47:20 25 4
gpt4 key购买 nike

我有三个表要INNER JOIN,因此我也有一些用户输入作为条件。表格(简化)如下:

# Table: node
- nid
- title

#Table: field_min_hours_value
- entity_id (corresponds to node.nid)
- field_min_hours_value

#Table: field_max_hours_value
- entity_id (corresponds to node.nid)
- field_max_hours_value

我需要获取具有一些用户输入值的节点,首先是 @max@min 小时,它们的值都可以在 - 140。当一个设置为 -1 时,它应该被忽略并且不被使用。

一个节点可以同时填充 field_min_hours_valuefield_max_hours_value 值然后它表示它可以在 field_min_hours_valuefield_max_hours_value 之间变化> 小时。

如果仅设置了 field_min_hours_value,则 field_max_hours_value 将包含 0,它们结合起来表明该节点只有一个可能的持续时间。

我尝试了类似于下方查询的方法,但产生了错误,但我认为它确实在某种程度上说明了我需要做什么。我想获取 @min@max 之间的所有节点,但也想考虑其中一个或两个值可以为空(-1 ) 然后我需要所有的节点。

SELECT n.nid, n.title, min.field_min_hours_value, max.field_max_hours_value
FROM node n
INNER JOIN field_data_field_max_hours max
ON n.nid = max.entity_id
INNER JOIN field_data_field_min_hours min
ON n.nid = min.entity_id
# Use the min value
IF @min != -1 THEN
WHERE
max.field_max_hours_value >= @min
OR (max.field_max_hours_value = 0 AND min.field_min_hours_value >= @min) # Needed for when there is no max_hours set in the node
END IF
# Use the max value
IF @max != -1 THEN
AND
# Use the max value
(min.field_min_hours_value <= @max)
END IF

最佳答案

在 WHERE 中使用另一个 OR 条件:

WHERE (@min = -1 OR 
max.field_max_hours_value >= @min
OR (max.field_max_hours_value = 0 AND min.field_min_hours_value >= @min)
# Needed for when there is no max_hours set in the node
) AND (@max = -1 OR
(min.field_min_hours_value <= @max)
# Use the max value
)

关于MySQL:条件 WHERE block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17882324/

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