gpt4 book ai didi

sql - MySQL - 选择 "Everyone who booked last January, but hasn' t 今年 1 月预订”

转载 作者:行者123 更新时间:2023-11-29 15:05:58 24 4
gpt4 key购买 nike

对于一条可能相当简单的 SQL 语句,我遇到了一些问题 - 不幸的是,我的技能还没有达到这个程度,而且我无法理解它!

例如,我有下表:

  • 预订记录
  • 客户

预订记录可能有一个客户的多个预订,它们通过“labelno”链接。

我想选择上次预订但未预订本次的客户。 IE。该客户去年这个月已经预订过,但今年没有预订。

我只选择了其中一种情况,例如:

Select client_.title, 
client_.initial,
client_.surname,
client_.labelno,
client_.email,
booking_record_.bookingdate
From booking_record booking_record_
Inner Join client client_ On booking_record_.labelno = client_.labelno
Where client_.email Not Like ''
And Date_Format(booking_record_.bookingdate, '%m') = ?Param1
And Date_Format(booking_record_.bookingdate, '%Y') = Year(AddDate(Now(), Interval -1 Year))
Group By client_.labelno

我快速浏览了 View ,但这是在报表设计器中使用的,它似乎不支持 View (或者至少在设计时不支持)。是否可以在不使用 View 的情况下获得我需要的内容?

谢谢,丹尼尔。

最佳答案

用途:

SELECT c.title,
c.initial,
c.surname,
c.labelno,
c.email,
br.booking date
FROM CLIENT c
JOIN BOOKING_RECORD br ON br.labelno = c.labelno
AND br.bookingdate BETWEEN STR_TO_DATE(?Param1, '%Y-%m-%d')
AND STR_TO_DATE(?Param2, '%Y-%m-%d')
WHERE c.label_no NOT IN (SELECT t.label_no
FROM BOOKING_RECORD t
WHERE br.bookingdate BETWEEN STR_TO_DATE(?Param3, '%Y-%m-%d')
AND STR_TO_DATE(?Param4, '%Y-%m-%d')
  • Param1 和 2 代表您要检查 IE 去年 1 月是否存在的过去日期。
  • Param3 和 4 代表您要检查的日期,但客户端没有。
  • 在列上使用函数进行评估意味着,假设该列存在索引,则不能使用该索引。

警告:

<小时/>

在 MySQL 中,NOT INLEFT JOIN/IS NULLNOT EXISTS 更快。对于 more information, see this link for details .

引用:

<小时/>

关于sql - MySQL - 选择 "Everyone who booked last January, but hasn' t 今年 1 月预订”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2058583/

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