Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
ZooY
Зарегистрирован: 15.01.2002 Сообщения: 210 Откуда: Россия, Москва
|
Добавлено: Вс Сен 19 2004 13:37 Заголовок сообщения: Помогите составить запрос (MySQL) |
|
|
Есть три таблицы: Brand, Tovar, Temp
Таблица Brand содержит поля BrandID и BrandName
Таблица Tovar содержит поля BrandID, TovarCode и TovarCount
Таблица Temp содержит поля TampName, TampCode и TampCount
Задача, записать в поле TovarCount таблицы Tovar значение из поля TampCount таблицы Temp, при условии что
Brand.BrandID=Tovar.BrandID,
Temp.TampName=Brand.BrandName и
Temp.TampCode=Tovar.TovarCode
Пишу запрос:
UPDATE Tovar
SET Tovar.TovarCount=Temp.TampCount
WHERE Brand.BrandID=Tovar.BrandID AND
Temp.TampName=Brand.BrandName AND
Temp.TampCode=Tovar.TovarCode
Но в ответ получаю сообщение что таблица Brand неизвестна. В томчто все таблицы на месте я уверен. Где тут может быть косяк? |
|
Вернуться к началу |
|
 |
Scaramouch
Зарегистрирован: 11.01.2004 Сообщения: 143 Откуда: Столица нашей Родины
|
Добавлено: Пн Сен 20 2004 09:07 Заголовок сообщения: |
|
|
Тут все зависит от версии мускуля.
Если версия достаточно большая(не помню точно, вроде с 4.*.*),
то она поддерживает несколько таблиц в UPDATE, то есть тебе надо писать
UPDATE Brand, Tovar, Temp.......
и далее по тексту.
Если же нет, то одним запросом не получится.
Можно через временную таблицу, можно средствами PHP или на чем ты там пишешь _________________ Ноги - это две лишние руки. |
|
Вернуться к началу |
|
 |
ZooY
Зарегистрирован: 15.01.2002 Сообщения: 210 Откуда: Россия, Москва
|
Добавлено: Пн Сен 20 2004 12:20 Заголовок сообщения: |
|
|
А как через временную таблицу? |
|
Вернуться к началу |
|
 |
Scaramouch
Зарегистрирован: 11.01.2004 Сообщения: 143 Откуда: Столица нашей Родины
|
Добавлено: Пн Сен 20 2004 13:27 Заголовок сообщения: |
|
|
Ну как - составляешь временную таблицу, таким образом, чтобы в ней были все те поля, которые есть в таблице, которую ты собрался менять, то есть BrandID, TovarCode, TovarCount.
Заносишь туда все данные, которые будут в тех записях, которые надо поменять(простите, я по русски не очень говорю )
CREATE TEMPORARY TABLE `tmp` SELECT Brand.BrandID, Tovar.TovarCode, Temp.TampCount FROM Brand, Tovar, Temp WHERE ...
(Твои условия).
Возможно запрос не очень правильный, здесь наверное LEFT JOIN нужен, посмотри сам.
Ну а теперь остался последний шаг :
REPLACE INTO Tovar SELECT * FROM Tmp;
.....
Ой, что-то я туплю, можно же сразу, без временной таблицы сделать
REPLACE INTO Tovar SELECT Brand.BrandID, Tovar.TovarCode, Temp.TampCount FROM Brand, Tovar, Temp WHERE ...
))
Выходные еще не закончились
Хотя если у тебя мускул ниже чем 4.0.1, то так не получится, так что придется через временную таблицу _________________ Ноги - это две лишние руки. |
|
Вернуться к началу |
|
 |
|