[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обновление таблицы
paul85
Доброго времени суток! И снова я прошу у Вас совета, дорогие ГУРУ!

Есть довольно любопытная задача. В первой таблице, хранится основной прайс-лист. Во второй таблице - временный прайс-лист. Задача проапдейтить основной прайс лист по временному, где каталожные номера продуктов совпадают. Делается это примерно так:

UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id


А как добавить в основной прайс-лист новые позиции из временного? Может быть есть красивое решение, наподобие первого? А то я нашел лишь вот это:

INSERT INTO user (id, name, username, opted_in)
SELECT id, name, username, opted_in
FROM user LEFT JOIN user_permission AS userPerm ON user.id = userPerm.user_id


Заранее спасибо!

P.s. Примеры привел исключительно для демонстрации подходов.
Lenarfate
предлагаю написать триггер на insert для основной таблицы
paul85
Lenarfate, увы с триггерами абсолютно не знаком. Как он должен выглядеть примерно?
sergeiss
paul85, надеюсь, в гугле тебя не забанили???

Вот запрос:
https://www.google.ru/search?client=opera&q...=UTF-8&oe=UTF-8

А вот первая же ссылку по нему: http://habrahabr.ru/post/37693/

Это сложно было самому проделать?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
paul85
sergeiss, я не могу обучаться от общего к частному. Эта отечественная система для меня не подходит. Продуктивно могу обучаться лишь от частного к общему. Собственно именно так, как преподают в США и других развитых странах.

Поэтому и попросил пример триггера под ЭТУ задачу. То есть актуальную задачу, интересную для меня задачу. По которой будет легко и любопытно открыть для себя данную тему.

Так что в данном случае я не лентяй. =)))
Кстати, вот больше всего на свете сам не люблю отвечать на справочные вопросы. Но тут другой случай.

MiksIr, я понял - спасибо. Только предпочитаю все же явно указывать поля. Мало ли поле добавится в одну из таблиц со временем. Да и, кстати, они разной ширины. Уже реализовал отлично работает. А то раньше делал один SELECT, а по нему foreach в котором другой SELECT. Потом определял есть ли строка. Если есть, то UPDATE, если нет, то INSERT. Ужас! Работало по времени чуть хуже чем никак. Там прайс 2000 позиций. Можно было и забить, таймаут позволял. А если придет прайс в 100 000 наименований!?

Затем запихнул из первой таблицы партнамберы в array. И foreach только по временной, с in_array($partnumber, $arr) в качестве определения наличия записи. Стал формировать пакетный INSERT и пакетный UPDATE по 100 записей. Работает неплохо, но это говнокод самый настоящий... А теперь у меня как у взрослого дядьки решение! =))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.