我有一个大型查询,其结构如下:
主表LT_CHC_TOURS_RSV_CS
有一堆t_dt
列。
LTR_CHC_TOURS_RSV_PRICE
的值为season
。
TR_SEASON
还有season
个自己的LTR_CHC_TOURS_RSV_PRICE
值(对应start_dt
),它还有end_dt
和p.season
个字段
我想在我的查询中说,联接必须是a.t_dt
字段必须与tr_season
start_dt
之间的end_dt
日期相对应。 {1}}我不知道该怎么做。
我不确定我是否正确解释了这一点。
表格
tr_season
season desc start_dt end_dt
1 s1 1/1/2013 12/31/2013
2 s2 1/1/2014 12/31/2014
3 s3 1/1/2015 12/31/2015
LTR_CHC_TOURS_RSV_PRICE
season price1 price2 price3
1 4 5 7
1 2 6 8
1 7 5 9
LT_CHC_TOURS_RSV_CS
t_dt count
2/5/2013 6
2/7/2014 2
8/2/2015 3
季节匹配,计数将乘以定价。
我的查询(未完成)
select * -- a bunch of stuff
FROM LT_CHC_TOURS_RSV_CS a
LEFT OUTER JOIN lv_customer_info1 b on a.grp_attending = b.customer_no
LEFT OUTER JOIN lv_chc_order_detail_info o on a.order_no = o.order_no
LEFT OUTER JOIN LTR_CHC_TOURS_RSV_PRICE p on /*this is where i'm stuck*/
答案 0 :(得分:1)
这样的事情怎么样?
select * -- a bunch of stuff
FROM LT_CHC_TOURS_RSV_CS a
LEFT OUTER JOIN lv_customer_info1 b on a.grp_attending = b.customer_no
LEFT OUTER JOIN lv_chc_order_detail_info o on a.order_no = o.order_no
JOIN TR_SEASON s on a.t_dt between s.start_dt and s.end_dt
JOIN LTR_CHC_TOURS_RSV_PRICE p on s.id = p.season
通过这种方式,您可以查看t_dt
字段,该字段应位于start_dt
和end_dt
之间,然后使用该字段中的ID进行加入。
答案 1 :(得分:0)
没有数据库可以用于测试,我认为你正在寻找类似于以下内容的东西。我不是一个SQL专家,但我觉得这样的事情会起作用。
select * -- a bunch of stuff
FROM LT_CHC_TOURS_RSV_CS a
LEFT OUTER JOIN lv_customer_info1 b on a.grp_attending = b.customer_no
LEFT OUTER JOIN lv_chc_order_detail_info o on a.order_no = o.order_no
LEFT OUTER JOIN LTR_CHC_TOURS_RSV_PRICE p on p.season = (
SELECT season
FROM tr_season s
INNER JOIN LTR_CHC_TOURS_RSV_PRICE pr
ON pr.season = s.season
WHERE (s.start_dt < pr.t_dt AND s.end_dt > pr.t_dt)
)