Прежде чем мы начнем, я прошу прощения за мой статус новичка 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