2012-02-19 20 views
1

私が始める前に、私は自分のMYSQL初心者の状態をお詫びします。私は、基本的な構造を基本的に少しでも徹底的に教え、苦労しています。MYSQL:エラー1054 - 不明な列

私の質問の背景:四半期に1回、請求書を発行する会社を考えてください。最後の四半期の終わりからおよそ2ヶ月です。私はいくつかの列を持つテーブル(Quarter_Identify)を持つ:

  • Quarter_Start EX:2010年1月1日
  • Quarter_End EX:2010年3月31日
  • Quarter_Ident EX:1000 < ---反復数各四半期の
  • Date_Billedこれは私が他のテーブル(Billing_List_1)が含まれている別のテーブル

から移入しようとしている分野である(次の 四半期には1001になります):

  • Date_Billed EX:他の客たちは四半期中にすべての注文を取る

に関連するナンセンス、紙幣約60日間、それが終了した後の2010年5月23日

  • たくさん。したがって、上記の例では、5-23-2010の請求は1月〜3月の四半期に関連しています(実際に遅く請求します)。私はこの日付をとり、Quart_Ident "1000"に関連付けられたDate_Billedとしてそれを戻したいと思います。

    私はかなり近く、私の研究から、私の "Where"句にはまだ作成されていないテーブル "スカイライン"への参照が含まれているという問題が発生していると思います。 「スカイライン」テーブルはすべて一緒に取得されますが、本質的に1ヶ月はオフです(私はDateDiff関数を理解しようとしました)。だから、結果を1つだけオフセットして正しい答えを得るために、下の部分を使用します...私の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 
    

    いずれの考えも高く評価されます。すべての素晴らしい夜を過ごしてください。


    解決策:もう一度大きな助けをいただきありがとうございます。

    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

    チェースに... "エラーコード:1054.不明な列 'where句'のSkyline.quarter_ident '" – Skyline29

    +0

    多くの請求書に関連する四半期は(私が正しく構造を理解している場合)です。では、なぜあなたは 'Date_Billed'の列ですか? –

    答えて

    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

    +1

    Teez、私は "on ... [条件を指定して....]"を理解しているかどうかわかりません... ...このテーブルは左にジョインされていますか? 4行目の参加は、すべてのデータをまとめたものです。 – Skyline29

    +1

    Teez、あなたはそれを持っています。 1つの "AS [Whatever]"というステートメントがありませんでしたが、あなたは釘付けになりました!感謝万円。私は上記のコードを投稿します。再度、感謝します。 – Skyline29

    関連する問題