Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Помогите составить запрос (MySQL)

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
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.
Заносишь туда все данные, которые будут в тех записях, которые надо поменять(простите, я по русски не очень говорю Smile )
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 ...
Smile))
Выходные еще не закончилисьSmile
Хотя если у тебя мускул ниже чем 4.0.1, то так не получится, так что придется через временную таблицу
_________________
Ноги - это две лишние руки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...