我正在创建一个SQL查询,其中要显示从woocommerce商店购买了可下载产品的客户的全名和电子邮件.我正在寻找这样的东西:

user_id first_name last_name user_email order

---------------------------------------------------------

1 Peter Jones a12@gmail Doc_1

在上表中,Doc_1代表产品的名称,在这种情况下,user_id = 1的客户可以下载Doc_1.对于wordpress用户,您知道表wp_usermeta包含所有用户信息,如下所示:

umeta_id user_id meta_key meta_value

---------------------------------------------

1 1 nickname petjon123

2 1 first_name Peter

3 1 last_name Jones

... ... ... ...

该列表下降了,包含更多的meta_value [s],包括电子邮件等.如果meta_key [s]是表标头,彼此显示first_name和last_name而不是放在顶部,则一切都会变得更加容易.到目前为止,我的查询中显示的是first_name,但是我在获取last_name时遇到了麻烦.我的SQL查询如下所示:

SELECT

wp_usermeta.user_id,

wp_usermeta.meta_value AS 'first_name',

Wp_woocommerce_downloadable_product_permissions_1.user_email AS 'email',

Wp_woocommerce_order_items_1.order_item_name AS 'order'

FROM Wp_woocommerce_order_items

INNER JOIN Wp_woocommerce_downloadable_product_permissions

ON Wp_woocommerce_order_items.order_id = Wp_woocommerce_downloadable_product_permissions.order_id,

(Wp_woocommerce_order_items AS Wp_woocommerce_order_items_1

INNER JOIN Wp_woocommerce_downloadable_product_permissions AS Wp_woocommerce_downloadable_product_permissions_1

ON Wp_woocommerce_order_items_1.order_id = Wp_woocommerce_downloadable_product_permissions_1.order_id)

INNER JOIN wp_usermeta

ON Wp_woocommerce_downloadable_product_permissions_1.user_id = wp_usermeta.user_id

GROUP BY wp_usermeta.user_id,

wp_usermeta.meta_value,

Wp_woocommerce_downloadable_product_permissions_1.user_email,

Wp_woocommerce_order_items_1.order_item_name,

Wp_woocommerce_order_items_1.order_item_type,

wp_usermeta.meta_key

HAVING (((Wp_woocommerce_order_items_1.order_item_type) = 'line_item')

AND ((wp_usermeta.meta_key) = 'first_name'));

给我这个结果:

user_id first_name user_email order

--------------------------------------------

1 Peter a12@gmail Doc_1

我手动检查了这些值,它们是正确的,但是,我必须说,如果不对结果进行分组,则会得到1000倍的结果,因此对数据进行分组可以通过基本上删除明显过多的重复项来简化结果.我怀疑该查询是否有效,因为直到结果出现为止的执行时间是/-20368.14 ms,因此对于改进此代码的任何建议都非常欢迎.如此说来,我以为我必须做另一个查询才能获得last_name,从而使它成为一个嵌套查询.如果我在MS Access中打开表,请创建一个查询Query1(上面的查询),然后将Query1与该表连接起来,以获得所需的结果.用于此的SQL代码如下:

SELECT

Query1.user_id,

Query1.first_name,

wp_usermeta.meta_value AS 'last_name',

Query1.user_email,

Query1.order_item_name

FROM wp_usermeta

INNER JOIN Query1

ON wp_usermeta.user_id = Query1.user_id

WHERE (((wp_usermeta.meta_value) <> '')

AND ((wp_usermeta.meta_key) = 'last_name'));

我尝试通过用括号将Query1的代码括起来,用括号将Query1替换为第二个查询,但这不起作用.我收到此错误:

您的SQL语法有误;请查看与您的MySQL服务器版本相对应的手册,以获取在’.user_id附近使用正确的语法,(在第22行,选择wp_usermeta.user_id,wp_usermeta.meta_value AS为“ first”

有人知道怎么做这个吗?谢谢!!

更新

根据@Hogan提供的答案,我想到了:

SELECT

first.user_id,

first.meta_value AS 'first_name',

last.meta_value AS 'last_name',

Wp_woocommerce_downloadable_product_permissions_1.user_email,

Wp_woocommerce_order_items_1.order_item_name

FROM Wp_woocommerce_order_items

INNER JOIN Wp_woocommerce_downloadable_product_permissions

ON Wp_woocommerce_order_items.order_id = Wp_woocommerce_downloadable_product_permissions.order_id,

wp_usermeta AS last

INNER JOIN ((Wp_woocommerce_order_items AS Wp_woocommerce_order_items_1

INNER JOIN Wp_woocommerce_downloadable_product_permissions AS Wp_woocommerce_downloadable_product_permissions_1

ON Wp_woocommerce_order_items_1.order_id = Wp_woocommerce_downloadable_product_permissions_1.order_id)

INNER JOIN wp_usermeta AS first

ON Wp_woocommerce_downloadable_product_permissions_1.user_id = first.user_id)

ON last.user_id = Wp_woocommerce_downloadable_product_permissions_1.user_id

GROUP BY first.user_id,

first.meta_value,

last.meta_value,

Wp_woocommerce_downloadable_product_permissions_1.user_email,

Wp_woocommerce_order_items_1.order_item_name,

Wp_woocommerce_order_items_1.order_item_type,

first.meta_key,

last.meta_key

HAVING (((Wp_woocommerce_order_items_1.order_item_type) = 'line_item')

AND ((first.meta_key) = 'first_name')

AND ((last.meta_key) = 'last_name'));

它在MS Access中工作得很好,但在SQL中却不能.我收到此错误:

“具有子句”中的未知列“ first.meta_key”

为什么?

我还必须提到,当我将meta_key [s]添加到SELECT时,如下所示:

SELECT

first.user_id,

first.meta_value AS 'first_name',

last.meta_value AS 'last_name',

Wp_woocommerce_downloadable_product_permissions_1.user_email,

Wp_woocommerce_order_items_1.order_item_name,

first.meta_key,

last.meta_key

我至少没有收到任何错误,查询正在运行,但是鉴于我正在本地主机上工作,因此它会不断增加CPU使用率.

SELECT DISTINCT达到目的.没有分组.查询结果出现在127.76毫秒内.这是我的查询:

SELECT DISTINCT

first.user_id AS 'id',

first.meta_value AS 'first_name',

last.meta_value AS 'last_name',

Wp_woocommerce_downloadable_product_permissions_1.user_email AS 'email',

Wp_woocommerce_order_items_1.order_item_name AS 'order'

FROM Wp_woocommerce_order_items

INNER JOIN Wp_woocommerce_downloadable_product_permissions

ON Wp_woocommerce_order_items.order_id = Wp_woocommerce_downloadable_product_permissions.order_id,

((Wp_woocommerce_order_items AS Wp_woocommerce_order_items_1

INNER JOIN Wp_woocommerce_downloadable_product_permissions AS Wp_woocommerce_downloadable_product_permissions_1

ON Wp_woocommerce_order_items_1.order_id = Wp_woocommerce_downloadable_product_permissions_1.order_id)

INNER JOIN wp_usermeta AS first

ON Wp_woocommerce_downloadable_product_permissions_1.user_id = first.user_id)

INNER JOIN wp_usermeta AS last

ON Wp_woocommerce_downloadable_product_permissions_1.user_id = last.user_id

WHERE (((first.meta_key) = 'first_name')

AND ((last.meta_key) = 'last_name')

AND ((Wp_woocommerce_order_items_1.order_item_type) = 'line_item'));

如@Hogan所述,只需再次使用另一个别名添加表wp_usermeta,然后进行INNER JOIN.

mysql查询姓氏的_mysql-WordPress SQL查询产品X的用户名和姓氏?相关推荐

  1. mysql数据库查询语句过程_mysql(一) SQL查询语句执行过程

    mysql基础架构 示意图 首先 mysql  大概分为 server层 和 存储引擎层 两个部分, 引擎的架构模式是插件形式的,mysql支持多种引擎如 InnoDB.MyISAM.Memory 等 ...

  2. MySQL与OLAP:分析型SQL查询最佳实践探索

    搞点多维分析,糙快猛的解决方式就是使用ROLAP(关系型OLAP)了.数据经维度建模后存储在MySQL,ROLAP引擎(比方开源的Mondrian)负责将OLAP请求转化为SQL语句提交给数据库.OL ...

  3. MySQL数据库基础(五)——SQL查询

    MySQL数据库基础(五)--SQL查询 一.单表查询 1.查询所有字段 在SELECT语句中使用星号""通配符查询所有字段 在SELECT语句中指定所有字段 select fro ...

  4. MySQL充电_Mysql 充电站SQL查询1--171221--mysql-sql

    Mysql 充电站SQL查询1--171221--mysql-sql --当月至现在查询支付成功后未成功充电的情况 select c.a 失败数,c.b 总数,c.a1,c.cs 失败率,c.cc 成 ...

  5. mysql 单表子查询语句_MySQL基本SQL查询语句:多表查询和子查询示例

    一.简单查询:基本语法: 代码如下 SELECT * FROM tb_name; 查询全部 代码如下 SELECT field1,field2 FROM tb_name; 投影 代码如下 SELECT ...

  6. mysql 查询语句属性值_MySQL学习——SQL查询语句(一)

    查询数据是指从数据库中获取所需要的数据,查询数据是数据库操作中最常用也是最重要的操作,用户可以根据对数据的需求,使用不同的查询方式,通过不同的查询方式可以获得不同的数据,在MySQL中使用select ...

  7. mysql 检查哪些项目_mysql根据内容查询在哪个表.go

    package main import ( "database/sql" "errors" "fmt" "github.com/g ...

  8. mysql子查询字符串位置_MySql基础-子查询

    一.子查询定义 定义: 子查询允许把一个查询嵌套在另一个查询当中. 子查询用()括起来 子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询. 子查询可以包含普通select可以包括的任 ...

  9. MySQL基础架构:一条SQL“查询语句”是如何执行的

    0. MySQL的基础架构图: (图片来自极客时间:https://time.geekbang.org/column/article/68319) 大体来说,MySQL可以分为Server层(服务器层 ...

最新文章

  1. 【数据挖掘】基于方格的聚类方法 ( 概念 | STING 方法 | CLIQUE 方法 )
  2. 实训笔记(一) 创建文件夹(SDCard)
  3. 分布式框架seata启动命令
  4. 交换机设备登录账号权限1_交换机Super密码配置方法
  5. Angular Component 实现类,先执行字段初始化,再调用构造函数
  6. ubuntu设置root密码及 Xftp连接linux(ubuntu)时提示ssh服务器拒绝了密码,请再试一次...
  7. 连续函数matlab采样,基于 MATLAB 的时域信号采样及频谱分析(转)
  8. python与txt文件查找,在Python中搜索TXT文件
  9. 【Nowcoder - 5670 B Graph】2020 牛客暑期多校训练营(第五场)【最小异或生成树、Boruvka 思想】
  10. 阿里java高级面试题
  11. 推荐系统(3)——个性化推荐系统架构
  12. idea打包jar的多种方式(总结-共三种)
  13. ElementUI Button按钮样式
  14. 网络环路导致公司网络瘫痪问题排查
  15. My SQL 安装配置
  16. Linux基础命令之:top命令详解以及VIRT,RES,SHR,DATA
  17. 前端人应该知道的 Centos/Docker/Nginx/Node/Jenkins 的基本操作
  18. 关于产品研发管理-《培思的力量》
  19. python参数解析模块_Python系列教程(三十七):参数解析模块argparse
  20. tcpdump 抓包写文件

热门文章

  1. 中国三氟乙醇行业研究与投资预测报告(2022版)
  2. android怎么处理模糊图片,Android 图片的高斯模糊处理
  3. Nova create instnace
  4. 课堂演讲之《遵纪守法》
  5. D80拍摄人像的基本招式
  6. 宝塔建站,使用文件修改功能要小心,可能有导致文件代码丢失的风险
  7. 漫画 | 编程语言三巨头的陨落
  8. 密室逃脱游戏解决方案-森林迷宫-炸弹人等
  9. python显示文字框_python-Tkinter画布文本添加边框(轮廓)
  10. 人工智能的黎明:混战中的语音识别