如何将一个表连接到另一个依赖两个日期列的表?

时间:2019-07-05 14:34:20

标签: sql sql-server

我有两个表

T1:

SomeHeaderArgumentResolver

T2:

public class SomeHeaderArgumentResolver implements HandlerMethodArgumentResolver {
    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        return parameter.getParameterAnnotation(SomeHeader.class) != null;
    }

    @Override
    public Object resolveArgument(MethodParameter parameter,
                                  ModelAndViewContainer mavContainer,
                                  NativeWebRequest webRequest,
                                  WebDataBinderFactory binderFactory) {
        HttpServletRequest request = (HttpServletRequest) webRequest.getNativeRequest();
        final String headerValue = request.getHeader("Some-Header");
        if(headerValue != null){
           return headerValue.replace("XXX ", "");
        } else {
           //handle scenario if header absent with ServletRequestBindingException
        }
       }
    }

我想匹配两个表,以便在顾客使用礼品卡时显示顾客的每一层。

例如,当用户将礼品卡与“ 165491839”一起使用时,他处于第1层。

或者,在GiftCardID ='167026357'时,该层为4。

我找不到相应的表格匹配方式。

我在等你的帮助...

1 个答案:

答案 0 :(得分:1)

只需使用JOIN

select t2.*, t1.tier
from table2 t2 left join
     table1 t1
     on t2.userid = t1.userid and
        t2.usedate >= t1.begindate and
        t2.userdate < t1.enddate;

这是left join,因此如果由于某些原因日期不匹配,您将不会丢失行。