2012-02-19 129 views
1

在我们开始之前,我为我的MYSQL新手状态道歉。我试图自我教导,并且基本的基本结构挣扎了一下。MYSQL:错误1054 - 未知列

关于我的问题的背景:考虑一家公司每季度发布一次账单...并且在上个季度结束后大约两个月。我有一个表(Quarter_Identify),有几列:

  • Quarter_Start EX:01-01-2010
  • Quarter_End EX:2010年3月31日
  • Quarter_Ident EX:1000 < ---迭代数每个季度的(下一 季度将是1001)
  • Date_Billed这是我想从另一个表

其他表(Billing_List_1)包含填充字段:

  • Date_Billed EX:2010年5月23日
  • 很多相关的客户

我们在本季度全部采取订单其他废话,和比尔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 
+0

看来你解释一些额外的东西。我们感到困惑。 – 2012-02-19 01:15:14

+0

切割到追逐...“错误代码:1054.未知列'Skyline.quarter_ident'在'where子句'” – Skyline29 2012-02-19 01:23:35

+0

任何季度(如果我理解结构正确)与许多帐单有关。那么,为什么你在那里有一个'Date_Billed'专栏? – 2012-02-19 01:57:48

回答

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 

请做必要的更改

+0

好赶上Teez,我把它搞糊涂了,同时粘在上面。更正了语言,但我仍然遇到同样的问题。 – Skyline29 2012-02-19 02:02:13

+1

Teez,我不确定我是否理解“关于[...在条件中指定....]”......这张表是什么被左连接到的?第4行的连接将所有数据聚集在一起 – Skyline29 2012-02-19 02:40:40

+1

Teez,你明白了。有一个失踪的“AS [无论]”声明,但你钉了!太感谢了。我将发布上面解决的代码。再次感谢。 – Skyline29 2012-02-19 02:53:02

相关问题