查询未正确加入,我该如何解决?
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_dt
和end_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_dt
和 end_dt
之间,然后使用该字段中的 ID 进行连接。
我有一个结构如下的大型查询:
有一堆 table 主 table 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
,我不知道该怎么做。
我不确定我的解释是否正确。
表格
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_dt
和 end_dt
之间,然后使用该字段中的 ID 进行连接。