MYSQL:错误1054 - 未知列

时间:2012-02-19 00:36:47

标签: mysql mysql-error-1054

在开始之前,我为我的MYSQL新手状态道歉。我试图通过基本的基本结构进行自我教育和挣扎。

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

  • Quarter_Start EX:01-01-2010
  • Quarter_End EX:03-31-2010
  • Quarter_Ident EX:1000< ---每个季度的迭代次数(下一次) 季度将是1001)
  • Date_Billed这是我试图从另一个表填充的字段

另一张表(Billing_List_1)包含:

  • Date_Billed EX:05-23-2010
  • 与客户相关的其他许多废话

我们在本季度接受所有订单,并在结束后约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

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

请做必要的更改