你能告诉我我用来检索客户上次下订单信息的查询有什么问题吗?

阿里哈桑

我正在尝试在 MySQL 工作台上编写一个查询,该查询显示客户上次从我客户的网站订购的时间。为此,我使用了两个表。一种称为“订单”,每当下新订单时都会更新订单时间,并为每个新订单分配一个唯一的 ID。另一个表称为“orders_customers_details”,它也会在下新订单时更新,并包含下订单的客户的唯一 ID(基于客户的电子邮件地址和电话号码的组合),以及一个键对应于订单表的 id。

我的问题是我使用的查询没有返回每个客户的最新订单。对于某些客户,我会收到他们最近第四次或第五次订购的日期。

我在 orders_customer_details 上加入订单:

left join orders o
on ocd.id = o.customer_details_id

我也试过使用左外连接和以下连接:

from orders o, orders_customers_details ocd
where o.customer_details_id = ocd.id

为了仅检索最近的订单,我按 customer_id HAVING max(order.id) 分组。仅供参考,order.id 随着每个新订单的放置而增加,因此具有最高 id 的订单是最近的订单。

我也试过

 SELECT customer_id, MAX(order.id) 

然后按customer_id分组,但无济于事。

这是整个代码:

select customer_id, o.id as id_of_last_order, date(order_date) as 
last_ordered, timestampdiff(day, order_date, now()) as 
days_since_last_ordered
from orders o, orders_customers_details ocd
where o.customer_details_id = ocd.id
group by customer_id having max(o.id)
order by customer_id;
戈登·利诺夫

MySQL 中的一个典型方法是使用相关子查询来获取最近的订单:

select ocd.customer_id, o.id as id_of_last_order, 
       date(o.order_date) as last_ordered,
       timestampdiff(day, o.order_date, now()) as days_since_last_ordered
from orders o join
     orders_customers_details ocd
     on o.customer_details_id = ocd.id
where o.order_date = (select max(o2.order_date)
                      from orders o2 join
                           orders_customers_details ocd2
                           on o2.customer_details_id = ocd2.id
                      where oc2.customer_id = ocd.customer_id
                     )
order by ocd.customer_id;

当然,如果o.id是自增列,则最大值来自最近的日期。如果是这种情况,那么您可以只使用聚合:

select ocd.customer_id,
       max(o.id) as id_of_last_order, 
       date(max(o.order_date)) as last_ordered,
       timestampdiff(day, max(o.order_date), now()) as days_since_last_ordered
from orders o join
     orders_customers_details ocd
     on o.customer_details_id = ocd.id
group by ocd.customer_id
order by ocd.customer_id;

在 MySQL 8+ 中,您只需使用窗口函数:

select *
from (select ocd.customer_id, o.id as id_of_last_order, 
             date(o.order_date) as last_ordered,
             timestampdiff(day, o.order_date, now()) as days_since_last_ordered,
             row_number() over (partition by ocd.customer_id order by o.order_date desc) as seqnum
      from orders o join
           orders_customers_details ocd
           on o.customer_details_id = ocd.id
     ) ocd
where seqnum = 1
order by ocd.customer_id;

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

你能告诉我这段javascript代码有什么问题吗?

来自分类Dev

分数不更新。你能告诉我代码有什么问题吗?

来自分类Dev

你能修复它或告诉我这有什么问题吗?我想要 Navigacio 鞋面

来自分类Dev

有人可以告诉我我的Type或linq查询出了什么问题吗

来自分类Dev

有人能告诉我这个javascript有什么问题吗?

来自分类Dev

有人能告诉我这段代码有什么问题吗?

来自分类Dev

有人可以告诉我我的代码有什么问题吗?

来自分类Dev

有人可以告诉我我的代码有什么问题吗?[Python 2.7.1]

来自分类Dev

有人能告诉我 emu8086 中的这段代码有什么问题吗?

来自分类Dev

请告诉我我的代码有什么问题吗?

来自分类Dev

有人可以告诉我这段代码有什么问题吗

来自分类Dev

有人可以告诉我此python代码有什么问题吗?

来自分类Dev

有人可以告诉我这张图片有什么问题吗?

来自分类Dev

谁能告诉我这个CSS代码有什么问题吗?

来自分类Dev

您能告诉我这段代码有什么问题吗?

来自分类Dev

该调试信息告诉我有关尝试的SSH连接出了什么问题的信息?

来自分类Dev

有人可以告诉我我的代码有什么问题并尝试对其进行解释吗?

来自分类Dev

有人可以告诉我我的package.json文件出了什么问题吗?

来自分类Dev

有人可以告诉我我的package.json文件出了什么问题吗?

来自分类Dev

谁能告诉我我的代码出了什么问题

来自分类Dev

谁能告诉我我的功能出了什么问题?

来自分类Dev

pygame跳跃系统出现问题。请告诉我我的代码有什么问题

来自分类Dev

你能告诉我为什么我的命令会出现错误消息无效语法吗

来自分类Dev

我需要有人告诉我代码中的逻辑出了什么问题

来自分类Dev

这是我的连接字符串,请告诉我有什么问题

来自分类Dev

你能告诉我在创建 a2 对象后为什么构造函数没有改变值吗

来自分类Dev

您能告诉我“ videoView.setVideoURI(uri);”,“ videoView.start();”是什么问题吗?

来自分类Dev

你能告诉我这个程序如何运作吗?

来自分类Dev

有人可以告诉我出了什么问题吗,当我尝试解密我加密的密文时,它告诉我我的填充不正确

Related 相关文章

  1. 1

    你能告诉我这段javascript代码有什么问题吗?

  2. 2

    分数不更新。你能告诉我代码有什么问题吗?

  3. 3

    你能修复它或告诉我这有什么问题吗?我想要 Navigacio 鞋面

  4. 4

    有人可以告诉我我的Type或linq查询出了什么问题吗

  5. 5

    有人能告诉我这个javascript有什么问题吗?

  6. 6

    有人能告诉我这段代码有什么问题吗?

  7. 7

    有人可以告诉我我的代码有什么问题吗?

  8. 8

    有人可以告诉我我的代码有什么问题吗?[Python 2.7.1]

  9. 9

    有人能告诉我 emu8086 中的这段代码有什么问题吗?

  10. 10

    请告诉我我的代码有什么问题吗?

  11. 11

    有人可以告诉我这段代码有什么问题吗

  12. 12

    有人可以告诉我此python代码有什么问题吗?

  13. 13

    有人可以告诉我这张图片有什么问题吗?

  14. 14

    谁能告诉我这个CSS代码有什么问题吗?

  15. 15

    您能告诉我这段代码有什么问题吗?

  16. 16

    该调试信息告诉我有关尝试的SSH连接出了什么问题的信息?

  17. 17

    有人可以告诉我我的代码有什么问题并尝试对其进行解释吗?

  18. 18

    有人可以告诉我我的package.json文件出了什么问题吗?

  19. 19

    有人可以告诉我我的package.json文件出了什么问题吗?

  20. 20

    谁能告诉我我的代码出了什么问题

  21. 21

    谁能告诉我我的功能出了什么问题?

  22. 22

    pygame跳跃系统出现问题。请告诉我我的代码有什么问题

  23. 23

    你能告诉我为什么我的命令会出现错误消息无效语法吗

  24. 24

    我需要有人告诉我代码中的逻辑出了什么问题

  25. 25

    这是我的连接字符串,请告诉我有什么问题

  26. 26

    你能告诉我在创建 a2 对象后为什么构造函数没有改变值吗

  27. 27

    您能告诉我“ videoView.setVideoURI(uri);”,“ videoView.start();”是什么问题吗?

  28. 28

    你能告诉我这个程序如何运作吗?

  29. 29

    有人可以告诉我出了什么问题吗,当我尝试解密我加密的密文时,它告诉我我的填充不正确

热门标签

归档