我如何编写一个自联接,其中包含条件可能并不总是存在的行

康纳·帕特里克·多兰

以下对票证订单的查询将删除不包含“pa_co-creation”的 G.meta_key 值的行,因为并非每个票证类型都具有此值。如何重写此查询以不删除这些行?

SELECT A.meta_value, B.meta_value, D.order_item_name, E.meta_value, F.meta_value, G.meta_value, H.meta_value, I.meta_value, J.meta_value, K.meta_value
FROM wp_postmeta A, wp_postmeta B, wp_woocommerce_order_items D, wp_woocommerce_order_itemmeta E, wp_woocommerce_order_itemmeta F, wp_woocommerce_order_itemmeta G, wp_woocommerce_order_itemmeta H, wp_woocommerce_order_itemmeta I, wp_postmeta J, wp_postmeta K
WHERE A.post_id = B.post_id AND B.post_id = D.order_id AND D.order_item_id = E.order_item_id AND E.order_item_id = F.order_item_id AND F.order_item_id = G.order_item_id AND G.order_item_id = H.order_item_id AND H.order_item_id = I.order_item_id AND A.post_id = J.post_id AND J.post_id = K.post_id
AND A.meta_key = '_billing_first_name' AND B.meta_key= '_billing_last_name' and D.order_item_type = 'line_item' And E.meta_key = 'pa_cabin-preference' AND F.meta_key = '_qty' AND G.meta_key = 'pa_co-creation' AND H.meta_key = 'pa_food' AND I.meta_key = 'pa_gluten' AND J.meta_key = '_billing_email' AND K.meta_key = '_billing_phone' AND D.order_id > 1014
奥·琼斯

这是一个相当大的查询。所以,有人在 SO 上回答你为你重写整个事情是没有意义的。

WordPress 及其 WooCommerce 扩展使用键值存储模式来存储任意元数据。正如您所发现的,当某些元数据丢失时,在结果集中保留行需要一些技巧。

你需要LEFT JOIN这个。(您正在使用旧的逗号连接语法:您正在聚会,就像 1999 年一样。)

这是从您的一些查询中获取的示例。

从一个表开始,该表包含您想要在结果集中的每一行的行。在 WordPress 中,这很可能是 wp_posts。

SELECT Z.post_id ...
  FROM wp_posts Z

然后开始像这样加入元数据

SELECT Z.postId, A.meta_value, ...
  FROM wp_posts Z
  LEFT JOIN wp_postmeta A ON Z.post_id = A.post_id AND A.meta_key = '_billing_first_name'

并继续采用这种模式,直到您将每个元数据项 LEFT JOIN 加入,您就会像 2018 年一样狂欢。

为什么这样做?因为普通的 JOIN(其中逗号连接是一种风格)会抑制结果集中不符合 JOIN 条件的行。但是 LEFT JOIN 保留这些行并显示 NULL 值代替缺失值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

N + 1查询,其中“ n”部分并不总是存在,但我需要一个默认值

来自分类Dev

当我在PHP中上传图片时,总是存在一个条件

来自分类Dev

如何返回一个MySQL查询,其中联接表中没有计数的行?

来自分类Dev

如何正常地在两个列上联接两个表,但是如果其中一个列包含null,那么结果必须包含仅与另一列匹配的行?

来自分类Dev

如何根据条件将多个SVG保存在一个文件中并使用其中一个?

来自分类Dev

Twig:如何正确链接两个 if 条件,其中一个条件包含“not”关键字?

来自分类Dev

绑定一个并不总是设置的参数

来自分类Dev

仅返回第一行,其中数组包含一个元素,并且可能省略前面看到的任何元素

来自分类Dev

仅返回第一行,其中数组包含一个元素,并且可能省略前面看到的任何元素

来自分类Dev

我该如何编写一个需要一个sequence的函数,并返回一个仅包含一个元素的映射的相同序列?

来自分类Dev

我可以创建一个Airtable视图,其中包含“链接的记录”列中不存在的记录吗?

来自分类Dev

我如何编写一个if条件来打破Python中的for循环

来自分类Dev

我如何编写一个if条件来打破Python中的for循环

来自分类Dev

每个组中最大的n,其中一个内部联接已存在

来自分类Dev

如果其中存在一个单词,如何删除整行?

来自分类Dev

查询以联接2个表,并且仅保留其中一个表的1行

来自分类Dev

如何编写一个函数,其中输入是数据框的一行,输出是另一个数据框?

来自分类Dev

是否有可能编写一个可以处理多对多联接的postgres函数?

来自分类Dev

我如何解析一个ini文件,其值可能包含某些字符?

来自分类Dev

Hibernate:如何用其中一个没有ID的两个表联接?

来自分类Dev

我在lavavel中有一个数据收集,其中包含多个会话,如何显示按会话分类的数据

来自分类Dev

使用反应式扩展我如何创建一个动态列表,其中包含可以过期的值

来自分类Dev

我如何点击另一个页面的链接,其中包含当前页面中的功能

来自分类Dev

如何编写一个循环,直到满足条件为止

来自分类Dev

我如何优雅地编写一个函数以从IEnumerable获取唯一属性(如果存在)?

来自分类Dev

MySQL:根据条件删除行,该条件包含来自另一个表的数据,并且不进行联接

来自分类Dev

我如何镜像矩阵的其中一个维度?

来自分类Dev

找出两个用户之间的联接,但不排除其中一个列不存在的位置

来自分类Dev

在R中,我如何制作一个六格图表,其中每个条包含一个数据范围?

Related 相关文章

  1. 1

    N + 1查询,其中“ n”部分并不总是存在,但我需要一个默认值

  2. 2

    当我在PHP中上传图片时,总是存在一个条件

  3. 3

    如何返回一个MySQL查询,其中联接表中没有计数的行?

  4. 4

    如何正常地在两个列上联接两个表,但是如果其中一个列包含null,那么结果必须包含仅与另一列匹配的行?

  5. 5

    如何根据条件将多个SVG保存在一个文件中并使用其中一个?

  6. 6

    Twig:如何正确链接两个 if 条件,其中一个条件包含“not”关键字?

  7. 7

    绑定一个并不总是设置的参数

  8. 8

    仅返回第一行,其中数组包含一个元素,并且可能省略前面看到的任何元素

  9. 9

    仅返回第一行,其中数组包含一个元素,并且可能省略前面看到的任何元素

  10. 10

    我该如何编写一个需要一个sequence的函数,并返回一个仅包含一个元素的映射的相同序列?

  11. 11

    我可以创建一个Airtable视图,其中包含“链接的记录”列中不存在的记录吗?

  12. 12

    我如何编写一个if条件来打破Python中的for循环

  13. 13

    我如何编写一个if条件来打破Python中的for循环

  14. 14

    每个组中最大的n,其中一个内部联接已存在

  15. 15

    如果其中存在一个单词,如何删除整行?

  16. 16

    查询以联接2个表,并且仅保留其中一个表的1行

  17. 17

    如何编写一个函数,其中输入是数据框的一行,输出是另一个数据框?

  18. 18

    是否有可能编写一个可以处理多对多联接的postgres函数?

  19. 19

    我如何解析一个ini文件,其值可能包含某些字符?

  20. 20

    Hibernate:如何用其中一个没有ID的两个表联接?

  21. 21

    我在lavavel中有一个数据收集,其中包含多个会话,如何显示按会话分类的数据

  22. 22

    使用反应式扩展我如何创建一个动态列表,其中包含可以过期的值

  23. 23

    我如何点击另一个页面的链接,其中包含当前页面中的功能

  24. 24

    如何编写一个循环,直到满足条件为止

  25. 25

    我如何优雅地编写一个函数以从IEnumerable获取唯一属性(如果存在)?

  26. 26

    MySQL:根据条件删除行,该条件包含来自另一个表的数据,并且不进行联接

  27. 27

    我如何镜像矩阵的其中一个维度?

  28. 28

    找出两个用户之间的联接,但不排除其中一个列不存在的位置

  29. 29

    在R中,我如何制作一个六格图表,其中每个条包含一个数据范围?

热门标签

归档