在开始之前,我为我的MYSQL新手状态道歉。我试图通过基本的基本结构进行自我教育和挣扎。
关于我的问题的背景:考虑一家公司每季度发行一次账单......在上一季度结束后大约两个月。我有一个表(Quarter_Identify)有几列:
另一张表(Billing_List_1)包含:
我们在本季度接受所有订单,并在结束后约60天收费。因此,在上面的例子中,5-23-2010账单将与1月至3月季度相关(我们的账单确实很晚)。我想把这个日期填充回来,因为Date_Billed与Quart_Ident“1000”相关联。
我非常接近并且从我的研究中我认为我遇到的问题是我的“Where”子句包含对尚未创建的表“Skyline”的引用。 “天际线”表将所有内容组合在一起,但基本上是一个月(我放弃了试图找出DateDiff函数)。因此,我使用底部部分将结果偏移一个并得到正确答案...除了它告诉我在where子句中有一个未知列(错误1054)问题。
Select * from
(select Billing_List_1.date_billed, quarter_identify.quarter_start,
quarter_identify.quarter_end, quarter_identify.quarter_ident from Billing_List_1
join quarter_identify
on Billing_List_1.date_billed > quarter_identify.quarter_start
and Billing_list_1.date_billed < quarter_identify.quarter_end)
as SKYLINETABLE;
update quarter_identify A
set A.date_Billed = SKYLINETABLE.date_Billed
where A.quarter_ident = SKYLINETABLE.quarter_ident - 1
任何想法都会非常感激。祝大家晚安。
每个TEEZ的解决方案:再次感谢您的帮助。
update quarter_identify A Left join
(Select * from
(select Billing_List_1.date_billed,
quarter_identify.quarter_start,
quarter_identify.quarter_end,
quarter_identify.quarter_ident from billing_list_1
join quarter_identify
on Billing_list_1.date_billed > quarter_identify.quarter_start
and Billing_list_1.date_billed < quarter_identify.quarter_end)
as T)
as SKYLINETABLE on 1
set A.date_billed = SKYLINETABLE.date_billed
where A.quarter_ident = SKYLINETABLE.quarter_ident - 1
答案 0 :(得分:0)
我认为你错了。更新查询中的SKYLINE
表是什么?
您正在更新查询中连接表,但未指定表。你应该在加入更新查询时使用你的第一个查询。
您需要在加入更新查询时使用加入SKYLINETABLE。
如下所示:
update quarter_identify A left join (Select * from
(select Billing_List_1.date_billed, quarter_identify.quarter_start,
quarter_identify.quarter_end, quarter_identify.quarter_ident from Billing_List_1
join quarter_identify
on Billing_List_1.date_billed > quarter_identify.quarter_start
and Billing_list_1.date_billed < quarter_identify.quarter_end)) as SKYLINETABLE on[... specify on condition....]
set A.date_Billed = SKYLINETABLE.date_Billed
where A.quarter_ident = SKYLINETABLE.quarter_ident - 1
请做必要的更改