Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Переформулировать запрос (Андрей) 06/05/2009 - 19:02:14
      Re: Переформулировать запрос (Андрей) 06/05/2009 - 19:05:45
      Re: Переформулировать запрос (Андрей) 06/05/2009 - 19:16:07
      Re: Переформулировать запрос (Алекс) 08/05/2009 - 03:31:15

> Original message text:
> From: Андрей - 06/05/2009 - 19:02:14
> Subject:Переформулировать запрос
> -----------------
> Есть таблица produces_cost, которая содержит цены на продукцию по периодам. В таблице имеется несколько записей с заполненными полями:
> - ID,
> - Produce_Type (тип продукции, в данном случае равен 'm' - обозначение того, что тип продукции - материалы),
> - ID_Produce (ссылка на запись в таблице materials и др.),
> - Start_Date (дата начала периода) и пустыми остальными полями (End_Date, Cost).
> Необходимо из записей, у которых Produce_Type = 'm' и ID_Produce = 1 (например), выбрать запись с наибольшим значением Start_Date и для этой записи установить значения незаполненных полей (End_Date, Cost).
>
> Составил SQL-запрос:
>
> UPDATE produces_cost
> SET End_Date = '2009-05-05'
> AND Cost =6
> WHERE Start_Date =
> (
> SELECT Start_Date
> FROM produces_cost
> WHERE Produce_Type = 'm'
> AND ID_Produce =1
> ORDER BY Start_Date DESC
> LIMIT 1
> )
>
> Ответ MySQL:
> #1093 - You can't specify target table 'produces_cost' for update in FROM clause
>
> Нельзя в SELECT использовать обращение к той же таблице, что и в UPDATE.
>
> Подскажите, как можно красиво переформулировать запрос?!
> Спасибо.
>


From: Андрей - 06/05/2009 - 19:16:07
Subject:Переформулировать запрос
-----------------
Есть ещё такой вариант:

UPDATE produces_cost
SET End_Date = '2009-05-05'
WHERE Produce_Type = 'm'
AND ID_Produce = 1
AND Start_Date =
(SELECT MAX(Start_Date)
FROM produces_cost
WHERE Produce_Type = 'm'
AND ID_Produce = 1)

Но результат тот же


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
35545



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |