Mysql 查询未正确连接,如何修复?

Mysql 查询未正确连接,如何修复?,mysql,join,left-join,Mysql,Join,Left Join,我有一个结构如下的大型查询: 有很多表,主表LT_CHC_TOURS_RSV_CS有一个t_dt列 有一个具有季节价值的LTR_CHC_TOURS_RSV_价格 还有一个季节,它有一个与LTR\U CHC\U TOURS\U RSV\U价格相对应的季节值。它还有一个开始和结束字段 我想在我的查询中说的是,连接必须是p。季节字段必须对应于a.t_dt日期,介于tru季节开始和结束之间,我不知道如何做到这一点 我不确定我的解释是否正确 桌子 特鲁季节 season desc start_dt

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

有很多表,主表LT_CHC_TOURS_RSV_CS有一个t_dt列

有一个具有季节价值的LTR_CHC_TOURS_RSV_价格

还有一个季节,它有一个与LTR\U CHC\U TOURS\U RSV\U价格相对应的季节值。它还有一个开始和结束字段

我想在我的查询中说的是,连接必须是p。季节字段必须对应于a.t_dt日期,介于tru季节开始和结束之间,我不知道如何做到这一点

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

桌子

特鲁季节

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_价格

season  price1   price2   price3
1        4         5        7
1        2         6        8     
1        7         5        9   
这是中国之旅

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进行连接

内部连接LTR\u CHC\u TOURS\u RSV\u PRICE pr价格表没有t\u dt字段,只有pr.season字段。抱歉,我一定把这些弄混了。如果需要确保LT_CHC_TOURS_RSV_CS t_dt字段位于季节日期字段之间,则需要存在某种关系。这些表或任何其他表上是否有其他字段可以链接它们?这很有效,谢谢。我想知道添加额外的连接是否会大大降低效率/速度。