生成sql查询

wlzqhblo  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(367)

mysql中有如下db结构:
表1:带属性的顺序
id(主键)
交货日期
客户id
餐厅id
订单价值
表2:具有属性的客户
id(主键)
名称
登录
表3:餐厅
id(主键)
名称
城市
我想生成一个db查询,在这里我选择客户id、登录名、交货日期、序列号以及从上一个订单到第二个到最后一个订单的天数。
我在使用内部联接和生成查询的最后两列时遇到问题:
顺序:每个用户可能已经点了任意数量的菜,我想显示一个数字3如果是他第三次点的菜,我应该能够从他的客户id和订单id得到它
datediff from last order:我在获取最后一个和第二个到最后一个顺序以及执行datediff和填充列时遇到问题
到目前为止,我构建了以下查询:

SELECT customer_id,
       login,
       delivery_date,
       sequence,
       Datediff(second_to_last_order, last_order)
FROM   order AS t1
       INNER JOIN customer AS t2
               ON t1.customer_id = t2.id
       INNER JOIN restaurant AS t3
               ON t1.restaurant_id = t3.id;

但它显然是不完整的,但我卡住了,有什么建议吗?

vlf7wbxs

vlf7wbxs1#

如果这是你提到的mysql服务器查询,那么我建议你试试下面的方法;

SELECT CUSTOMER_ID, LOGIN, DELIVERY_DATE, SEQUENCE, DATEDIFF((SELECT MAX(z.ORDER_DATE) FROM ORDER AS z WHERE z.CUSTOMER_ID = t1.CUSTOMER_ID), (SELECT MAX(x.ORDER_DATE) FROM ORDER AS x WHERE x.CUSTOMER_ID = t1.CUSTOMER_ID AND x.ID != (SELECT MAX(x.ID) FROM ORDER AS x2 WHERE x2.CUSTOMER_ID = t1.CUSTOMER_ID)))
FROM ORDER AS a
INNER JOIN CUSTOMER AS t2 ON t1.CUSTOMER_ID = t2.ID
INNER JOIN RESTAURANT AS t3 ON t1.RESTAURANT_ID = t3.ID
ORDER BY t1;

我建议最好不要调用表“order”,因为这是mysql使用的关键字,您可以简单地调用表“orders”来避免这个问题。
这应该做你所要求的,如果你有任何问题,请张贴任何错误文本,以便我们可以更好地了解你所面临的问题。

相关问题