gpt4 book ai didi

php - 需要帮助为 select 语句编写 SQL 查询

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

我需要有关 SQL 查询的帮助。我想显示 test_lated_orders 表中的行,其中当前用户 id 等于 test_lated_orders 表中的 user_id,并且 order_unlock_time (来 self 的表)<= 实际时间戳。直到这里一切正常。但现在情况变得复杂了。我还需要在我的 wp_posts 表中检查/限制是否有一个 post_author 等于我的 test_lated_orders user_id,并且其现有 order_number 与我的 test_lated_orders order_number 相同。

如果此语句为真,将显示我的 test_lated_orders 中的相关行。如果此陈述为假,则不应有任何关联行。

(因此,当我在 woocommerce 前端删除订单时,该语句不应返回该条目的字符串。)

这是我现有的代码:

$user_id = get_current_user_id();
//Timestamp for current system time
date_default_timezone_set("Europe/Berlin");
$timestamp = date("Y-m-d H:i:s");
//Database Query
$abfrage = "SELECT * FROM test_related_orders WHERE user_id = '$user_id' AND order_unlock_time <= '$timestamp'";

我想我可以使用 INNER JOIN 并且我在这里尝试过:

INNER JOIN wp_posts ON '$user_id' = post_author WHERE....

但这对我这个初学者来说太复杂了。

这是我的数据库结构:

test_lated_orders 结构:order_number 如下所示:DE-1016-835,user_id 为普通号码/id,如本例中的 1。

wp_posts数据库结构:

enter image description here

enter image description here

最后一张图片是来自 wp_posts 的示例条目。问题是我必须从 post_title 中获取订单号,为此我必须从该标题中删除第一个单词“Lieferschein”才能获取 order_number,并且该数字没有额外的字段...

感谢您的帮助!我希望我能完整地解释它。

最佳答案

要解决的第一个问题是从 post_title 获取订单号,以便您可以比较内部联接中的值。假设订单号始终采用 AA-DDDD-DDD 形式,则执行此操作的一种原始方法是

SELECT right(post_title, 11) as posts_order_number

正如您已经发现的,您需要的是内部联接,因为它只会返回表匹配的结果。请注意,您通常根据表的列来连接表,而不是直接与“$user_id”字符串进行比较(并且您已经在 where 子句中对此进行了过滤)。

您一次可以加入多个字段,以匹配订单号和 user_id。

您的查询现在变为:

SELECT * 
FROM test_related_orders tro
INNER JOIN wp_posts p
ON tro.user_id = p.post_author
AND tro.order_number = right(p.post_title, 11)
WHERE tro.user_id = '$user_id' AND order_unlock_time <= '$timestamp'

关于php - 需要帮助为 select 语句编写 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39944330/

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