【发布时间】:2012-03-09 21:00:40
【问题描述】:
在我们开始之前,我为我的 MYSQL 新手身份道歉。我正在尝试自学并在基本结构方面有点挣扎。
我的问题的背景:假设一家公司每季度发行一次账单......并且在上个季度结束后大约两个月。我有一个包含几列的表 (Quarter_Identify):
- Quarter_Start EX:01-01-2010
- Quarter_End EX: 03-31-2010
- Quarter_Ident EX: 1000
- Date_Billed 这是我试图从另一个表中填充的字段
另一个表 (Billing_List_1) 包含:
- Date_Billed EX:05-23-2010
- 很多其他与客户相关的废话
我们在本季度接受所有订单,并在结束后约 60 天开具账单。因此,在上面的示例中,2010 年 5 月 23 日的计费将与 1 月至 3 月季度相关(我们计费非常晚)。我想取这个日期并将其填充为与 Quart_Ident "1000" 关联的 Date_Billed。
我非常接近,根据我的研究,我认为我遇到了这样一个问题,即我的“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
【问题讨论】:
-
你似乎解释了一些额外的东西。我们感到困惑。
-
切入正题...“错误代码:1054。'where 子句'中的未知列'Skyline.quarter_ident'”
-
任何季度(如果我理解结构正确的话)都与许多账单相关。那么,您为什么要在此处设置
Date_Billed专栏? -
每季度只有一次批量计费。
-
@Skyline29:您不必在标题上添加
[SOLVED]或任何内容。一旦你接受了一个答案,这对其他人来说是显而易见的。