MYSQL: ошибка 1054 - неизвестный столбец - PullRequest
1 голос
/ 19 февраля 2012

Прежде чем мы начнем, я прошу прощения за мой статус новичка MYSQL. Я пытаюсь самообучаться и немного борюсь с базовой базовой структурой.

Предыстория моего вопроса: рассмотрим компанию, которая выпускает счета раз в квартал ... и примерно через два месяца после окончания последнего квартала. У меня есть таблица (Quarter_Identify), которая имеет несколько столбцов:

  • Quarter_Start EX: 01-01-2010
  • Quarter_End EX: 03-31-2010
  • Quarter_Ident EX: 1000 <--- номер итерации для каждого квартала (следующий четверть будет 1001) </li>
  • Date_Billed. Это поле, которое я пытаюсь заполнить из другой таблицы.

Другая таблица (Billing_List_1) содержит:

  • Дата_счета EX: 05-23-2010
  • Много других глупостей, связанных с клиентами

Мы принимаем все заказы в течение квартала и выставляем счет через 60 дней после его окончания. Таким образом, в приведенном выше примере выставление счетов 5-23-2010 будет связано с кварталом с января по март (мы выставляем счета очень поздно). Я хотел бы взять эту дату и заполнить ее как Date_Billed, связанный с Quart_Ident "1000".

Я довольно близок, и из своих исследований я думаю, что столкнулся с проблемой, заключающейся в том, что мое предложение "Где" включает ссылку на еще не созданную таблицу "Skyline". Таблица "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 голосов
/ 19 февраля 2012

Я думаю, что вы не правы. что такое 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

Пожалуйста, внесите необходимые изменения

...