查询未正确加入,我该如何解决?

Query is not joining correctly, how do I fix it?

我有一个结构如下的大型查询:

有一堆 table 主 table LT_CHC_TOURS_RSV_CS 有一个 t_dt 列。

LTR_CHC_TOURS_RSV_PRICE 的值是 season

还有TR_SEASON有一个自己的season值(对应于LTR_CHC_TOURS_RSV_PRICE)它还有一个start_dtend_dt字段

我想在查询中说的是,连接必须是 p.season 字段必须对应于 a.t_dt 日期介于 tr_season start_dt 之间end_dt,我不知道该怎么做。

我不确定我的解释是否正确。

表格

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*/

没有可用于测试的数据库,我认为您正在寻找类似于以下内容的内容。我不是 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)
)

这样的事情怎么样?

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_dtend_dt 之间,然后使用该字段中的 ID 进行连接。