Перейти к содержимому


Перенос данных из одной таблицы в другую


Сообщений в теме: 9

#1 TelecomMedia

    Активный участник

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 22 Апрель 2014 - 13:39

В таблице "Заявки с КЦ" сделал вычисление, чтобы при изменении поля "Оценка заявки" в таблице "Заявки с КЦ", соответствующее значение копировалось в поле "Оценка заявки" таблицы "КЦ".

Само вычисление:

data_update(541, array(f11551 => $line['Оценка заявки']), "f12361=",$line['ID']); 


где: 541 - таблица КЦ
f11551 - поле "Оценка заявки" таблицы КЦ
f12361 - поле "Связь с Заявками" в таблице "КЦ" (поле связи)

Данные из таблицы КЦ подтягиваются только когда вручную в поле "Связь с заявками" выбирается номер соответствующей заявки.

Как переписать вычисление, чтобы информация передавалась автоматически?

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Апрель 2014 - 13:47

Не совсем понял вопроса. Что значит "автоматически"? Вычисление - это не "автоматически"?

#3 TelecomMedia

    Активный участник

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 22 Апрель 2014 - 14:33

Это значит что как только в таблице "Заявки с КЦ" поставили оценку и сохранили запись, в таблице "КЦ" (откуда собственно эта запись и передалась) отобразилась соответствующая оценка.
Сейчас же это происходит следующим образом:
нужно в "КЦ" в поле связи выбрать запись из таблицы "Заявки с КЦ" и только тогда данные перенесутся.

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Апрель 2014 - 15:51

Не понял честно говоря до конца алгоритма вашей работы. Вы когда создаете Заявку КЦ, она не привязывается сразу к конкретному КЦ, в самой заявке? Нет там поля связи с КЦ разве? Или вы только потом, заходя уже в таблицу КЦ, оттуда привязываете к нему заявку?

#5 TelecomMedia

    Активный участник

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 22 Апрель 2014 - 16:31

Вообщем схема такая:

1. Специалист колл центра заполняет необходимые поля.
2. Доп. действием в таблице "Заявки с КЦ" создается новая запись, копируются поля из таблицы КЦ.
(Если потребуется могу привести код доп. действия)
3. Менеджеры видят эту запись и присваивают ей оценку.
4. Эта оценка должна автоматически попадать в таблицу КЦ, откуда по сути эта заявка пришла.


В таблице "КЦ" есть поле связи - f12361("Связь с Заявками"), связанное с полем "номер" таблицы "Заявки с КЦ".

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Апрель 2014 - 18:34

А почему в таблице КЦ связь с заявкой? Может я чего-то не понимаю, но разве не логичнее наоборот, в заявке указывать связь с КЦ? Или я опять что-то не понимаю, и запись в КЦ создается после заявки, а не наоборот - заявка создается по существующему КЦ?

Поясняю на примере: счета создаются по существующим контрагентам и поэтому именно в счете при его создании указывается связь с контрагентом. Наоборот было бы крайне странно делать (тем более что по одному контрагенту может быть несколько счетов). Это было бы естественно только в случае если бы сначала создавался безымянный счет, а потом уже по нему контрагент, и в контрагенте указывался бы счет, на основании которого он создан.

#7 G-express

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений
  • Пол:Мужчина

Отправлено 21 Май 2014 - 20:00

Добрый день!
Есть две таблицы: "Все заявки" и "Заявки(Интернет-магазин)" и в обоих есть поле "Номер".
Помогите сделать два вычисления:
1.Первое вычисление. В таблице "Заявки(Интернет-магазин)".
При добавление, редактировании записи в таблице срабатывает вычисление:
Если в поле "Номер" данной записи из таблицы "Заявки(Интернет-магазин)" совпадает с полем "Номер" какой либо записи таблицы "Все заявки" то все поля записи таблицы "Все заявки" обновляются из соответствующих полей записи таблицы "Заявки(Интернет-магазин)".
В противном же случае в таблице "Все заявки" добавлялась запись и данные всех полей из таблицы "Заявки(Интернет-магазин)" копировались в соответствующие поля.
2.Второе вычисление. В таблице "Все заявки".
Зеркальное отражение первого вычисления.

#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Май 2014 - 08:52

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

#9 G-express

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений
  • Пол:Мужчина

Отправлено 23 Май 2014 - 12:23

У меня получилось сделать обновление отдельно, добавление новой строки тоже отдельно, а вот как сделать запрос на совпадение поля "номер" нет. Не могу разобраться как это сделать.

Вот запрос на обновление:
data_update(111, array("f2031" => $line['Статус заявки']), "f1981='",$line['Номер'],"'");
data_update(111, array("f2031" => $line['Кто добавил']), "f1981='",$line['Номер'],"'");
data_update(111, array("f2031" => $line['Клиент']['raw']), "f1981='",$line['Номер'],"'");
data_update(111, array("f2031" => $line['Комментарий к заявке']), "f1981='",$line['Номер'],"'");
data_update(111, array("f2031" => $line['Курьер']['raw']), "f1981='",$line['Номер'],"'");
data_update(111, array("f2031" => $line['Сумма']), "f1981='",$line['Номер'],"'");
data_update(111, array("f2031" => $line['Скидка %']), "f1981='",$line['Номер'],"'");
data_update(111, array("f2031" => $line['Тип доставки']), "f1981='",$line['Номер'],"'");
data_update(111, array("f2031" => $line['Срочность доставки']), "f1981='",$line['Номер'],"'");
data_update(111, array("f2031" => $line['Желаемое время доставки']), "f1981='",$line['Номер'],"'");
data_update(111, array("f2031" => $line['Заявка поступила']), "f1981='",$line['Номер'],"'");
data_update(111, array("f2031" => $line['Откуда вы о нас узнали']), "f1981='",$line['Номер'],"'");

Запрос на добавление:
$data['Номер'] = $line['Номер'];
$data['Статус заявки'] = $line['Статус заявки'];
$data['Кто добавил'] = $line['Кто добавил'];
$data['Клиент'] = $line['Клиент']['raw'];
$data['Комментарий к заявке'] = $line['Комментарий к заявке'];
$data['Курьер'] = $line['Курьер']['raw'];
$data['Сумма'] = $line['Сумма'];
$data['Скидка %'] = $line['Скидка %'];
$data['Оплата'] = $line['Оплата'];
$data['Тип доставки'] = $line['Тип доставки'];
$data['Срочность доставки'] = $line['Срочность доставки'];
$data['Желаемое время доставки'] = $line['Желаемое время доставки'];
$data['Заявка поступила'] = $line['Заявка поступила'];
$data['Откуда вы о нас узнали'] = $line['Откуда вы о нас узнали'];
insert_query($data,"Все заявки");
Подскажите, как все таки сделать запрос на совпадение значений полей?

Сообщение отредактировал G-express: 23 Май 2014 - 12:30


#10 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 23 Май 2014 - 13:14

Цитата

Вот запрос на обновление

А зачем вы каждое поле по отдельности обновляете? Это нерационально и приведет к напрасным "тормозам". В обновлении принцип такой же как и во вставке, только функция не insert_query, а update_query, и третим аргументом в нем условие, какую именно запись обновлять.

Цитата

а вот как сделать запрос на совпадение поля "номер" нет

data_table("Все заявки", "`Номер`='".$line['Номер']."'");

Полный код:

if (data_table("Все заявки", "`Номер`='".$line['Номер']."'"))
{ // заявка с таким номером уже есть:
    $data['Статус заявки'] = $line['Статус заявки'];
    $data['Кто добавил'] = $line['Кто добавил'];
    $data['Клиент'] = $line['Клиент']['raw'];
    $data['Комментарий к заявке'] = $line['Комментарий к заявке'];
    $data['Курьер'] = $line['Курьер']['raw'];
    $data['Сумма'] = $line['Сумма'];
    $data['Скидка %'] = $line['Скидка %'];
    $data['Оплата'] = $line['Оплата'];
    $data['Тип доставки'] = $line['Тип доставки'];
    $data['Срочность доставки'] = $line['Срочность доставки'];
    $data['Желаемое время доставки'] = $line['Желаемое время доставки'];
    $data['Заявка поступила'] = $line['Заявка поступила'];
    $data['Откуда вы о нас узнали'] = $line['Откуда вы о нас узнали'];
    update_query($data, "Все заявки", "`Номер`='".$line['Номер']."'");
}
else
{ // заявки с таким номером нет:
    $data['Номер'] = $line['Номер'];
    $data['Статус заявки'] = $line['Статус заявки'];
    $data['Кто добавил'] = $line['Кто добавил'];
    $data['Клиент'] = $line['Клиент']['raw'];
    $data['Комментарий к заявке'] = $line['Комментарий к заявке'];
    $data['Курьер'] = $line['Курьер']['raw'];
    $data['Сумма'] = $line['Сумма'];
    $data['Скидка %'] = $line['Скидка %'];
    $data['Оплата'] = $line['Оплата'];
    $data['Тип доставки'] = $line['Тип доставки'];
    $data['Срочность доставки'] = $line['Срочность доставки'];
    $data['Желаемое время доставки'] = $line['Желаемое время доставки'];
    $data['Заявка поступила'] = $line['Заявка поступила'];
    $data['Откуда вы о нас узнали'] = $line['Откуда вы о нас узнали'];
    insert_query($data, "Все заявки");
}






Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных