我有2个表,一个是我的结果表,其中有一个“日期”列,另一个是“描述”。 另一个是我的配置表,其中有“开始日”,“开始月”和“结束日”,“结束月”。联接两个表的唯一方法是使用日期,其中表结果中的“日期”列必须在配置表的“开始”日期和月份与“结束”日期和月份之间。
T_Result | ID | 日期 说明
T_Configuration | ID | 描述 Begin_Day | Begin_Month | 结束日| 月末
我该怎么办?
答案 0 :(得分:2)
答案以正确,明确,标准,可读的JOIN
语法表示:
SELECT *
FROM T_Result r JOIN
T_Configuration c
ON DAY(r.Date) BETWEEN c.Begin_Day AND c.End_Day AND
MONTH(r.Date) BETWEEN c.Begin_Month AND c.End_Month;
还请注意使用表别名来简化查询的编写。
答案 1 :(得分:1)
它适合SQL Server。注意括号!
SELECT *
FROM [table_name_1]
INNER JOIN[table_name_2]
ON (strftime('%d',[table_name_1].Date) BETWEEN [table_name_2].[Begin-Day] AND [table_name_2].[End-Day])
AND (strftime('%m', [table_name_1].Date) BETWEEN [table_name_2].[Begin-Month] AND [table_name_2].[End-Month])
答案 2 :(得分:1)
假定Begin_Month和End_Month列为数字,
SELECT * FROM T_Result, T_Configuration
WHERE
(DAY(T_Result.Date) BETWEEN T_Configuration.Begin_Day AND T_Configuration.End_Day) AND
(MONTH(T_Result.Date) BETWEEN T_Configuration.Begin_Month AND T_Configuration.End_Month)