gpt4 book ai didi

mysql - SQL 内部查询 WHERE 子句访问外部查询表

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

早上好-

这是我在这里发表的第一篇文章,多年来一直将 SO 用作非常有用的资源。

我遇到了一个复杂的(对我来说)查询的问题,我正在为一个运行 woocommerce 的 wordpress 网站收集来处理订单。我正在尝试向订单列表添加过滤器,以过滤包含特定产品类别中的产品的订单。

恐怕我已经无法理解这个查询了,它在内部查询上连接了各种元表,以便获得我需要的信息来确定产品的类别。

问题是我无法让作用域规则起作用,以便在内部查询中访问所需的外表信息。

查询是:

    SELECT SQL_CALC_FOUND_ROWS
wp_ot6q6i_posts.ID
FROM
wp_ot6q6i_posts
WHERE
1 = 1 AND YEAR(wp_ot6q6i_posts.post_date) = 2015 AND MONTH(wp_ot6q6i_posts.post_date) = 12 AND wp_ot6q6i_posts.post_type = 'shop_order' AND(
(
wp_ot6q6i_posts.post_status = 'wc-pending' OR wp_ot6q6i_posts.post_status = 'wc-processing' OR wp_ot6q6i_posts.post_status = 'wc-on-hold' OR wp_ot6q6i_posts.post_status = 'wc-completed' OR wp_ot6q6i_posts.post_status = 'wc-cancelled' OR wp_ot6q6i_posts.post_status = 'wc-refunded' OR wp_ot6q6i_posts.post_status = 'wc-failed'
)
) AND EXISTS(
SELECT
t2.PROD_ID
FROM
(
SELECT
wp_ot6q6i_woocommerce_order_itemmeta.meta_value AS PROD_ID
FROM
wp_ot6q6i_woocommerce_order_items
LEFT JOIN
wp_ot6q6i_woocommerce_order_itemmeta
ON
wp_ot6q6i_woocommerce_order_itemmeta.order_item_id = wp_ot6q6i_woocommerce_order_items.order_item_id
WHERE
wp_ot6q6i_woocommerce_order_items.order_item_type = 'line_item' AND wp_ot6q6i_woocommerce_order_itemmeta.meta_key = '_product_id' AND wp_ot6q6i_posts.ID = wp_ot6q6i_woocommerce_order_items.order_id
) t1
INNER JOIN
(
SELECT DISTINCT
wposts.ID AS PROD_ID
FROM
wp_ot6q6i_posts wposts
LEFT JOIN
wp_ot6q6i_postmeta wpostmeta
ON
wposts.ID = wpostmeta.post_id
LEFT JOIN
wp_ot6q6i_term_relationships
ON
(
wposts.ID = wp_ot6q6i_term_relationships.object_id
)
LEFT JOIN
wp_ot6q6i_term_taxonomy
ON
(
wp_ot6q6i_term_relationships.term_taxonomy_id = wp_ot6q6i_term_taxonomy.term_taxonomy_id
)
WHERE
wp_ot6q6i_term_taxonomy.taxonomy = 'product_cat' AND wp_ot6q6i_term_taxonomy.term_id IN(
SELECT
term_id
FROM
`wp_ot6q6i_terms`
WHERE
slug = 'preorder'
)
ORDER BY
wpostmeta.meta_value
) t2
ON
t1.PROD_ID = t2.PROD_ID
)
ORDER BY
wp_ot6q6i_posts.post_date
DESC
LIMIT 0, 20

我得到的错误是:

1054 - “where 子句”中的未知列“wp_ot6q6i_posts.ID”

最佳答案

感谢大家的帮助。我最终走向了不同的方向来解决这个问题,作为一个开发者我更适应......我从最后一个连接中提取固定的项目列表并在具有一系列的代码中构建一个查询在 where 子句中进行更简单的查询,从而避免整个 Exists 方法。

再次感谢您的帮助。

关于mysql - SQL 内部查询 WHERE 子句访问外部查询表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42562965/

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