|
MySQL.RU - Webboard
Вернуться
Помогите с запросом на обновление. (Krondor) 04/05/2011 - 13:52:47
Re: Помогите с запросом на обновление. (Akina) 04/05/2011 - 15:02:13
Re: Помогите с запросом на обновление. (Krondor) 04/05/2011 - 15:14:52
Re: Помогите с запросом на обновление. (Akina) 04/05/2011 - 17:23:13
> Original message text:
> From: Krondor - 04/05/2011 - 13:52:47
> Subject:Помогите с запросом на обновление.
> -----------------
> Господа. прощу помощи.
> есть база данных инет-магазина автозапчастей. в ней есть три таблицы.
> fw_items - в ней находится информация по деталям. каждая деталь принадлежит одному конкретному каталогу. (id, название, каталожный номер, id каталога, прочее)
> fw_matches - в ней находится соответствие названия и ID каталога. (cat_name, cat_id)
> pricelist - прайс-лист поставщика, в котором находится информация по деталям и ценам. (поле brend содержит название каталога, к которому принадлежит деталь)
> мне нужно из таблички pricelist забрать все детали, которых нет в табличке fw_items.
> у меня получилось пока что составить вот такой запрос:
> INSERT INTO fw_items (`name`, `number`, `catalogue_id`, `alternative`)
> SELECT fr.name, fr.number, m.cat_id, fr.altcode
> FROM pricelist fr
> LEFT JOIN fw_matches AS m ON (m.cat_name=fr.brend)
> LEFT JOIN fw_items AS i ON (i.number=fr.number and i.catalogue_id=m.cat_id)
> WHERE (NOT EXISTS (
> SELECT a.item_id
> FROM fw_items a
> WHERE a.item_id=i.item_id))
> AND (m.cat_name=fr.brend)
> но при использовании такого запроса периодически появляются дубликаты уже имеющихся в таблице деталей.
> подскажите пожалуйста, как можно модифицировать запрос, чтобы дубликатов не возникало и детали загружались корректно?
>
From: Akina - 04/05/2011 - 15:02:13
Subject:Помогите с запросом на обновление.
-----------------
Самое тривиальное - создание уникального индекса по нужным полям и добавление ON DUPLICATE IGNORE в запрос. Это не позволит добавить в таблицу дубль и не вызовет проблем в работе программы.
Хотя правильнее - сначала вывести куда-то все дубликаты для анализа, и лишь потом заливать.
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
38394
|
|