PHP MySQL Вставить новые строки автоматически с теми же значениями для X, если - PullRequest
1 голос
/ 10 марта 2020

Я работаю с двумя таблицами.

 Table1(Source): nextgenorders2
 Table2(My Table): mytable_nextgenorders2

Таблица 1 - исходные данные. У меня нет контроля над этим, и я должен работать с тем, что у меня есть.

Таблица 2 - это моя таблица, в которой содержатся те же данные, что и в таблице 1, с некоторыми дополнительными столбцами.

У меня проблема если вчера в записях с названием компании "Deeway HS" было 3 записи в исходной таблице 1, а сегодня в исходной таблице 10 записей, я не хочу вручную инициировать запрос, чтобы сохранить эти записи. новые записи в таблице 2.

Мне нужно вставить эти новые записи в таблицу 2 с тем же значением для столбца tech и столбца состояния, что и для других соответствующих записей, которые имеют такое же название компании автоматически.

Является ли MYSQL триггером лучшим решением для сценария? Или запрос, который выполняется с интервалом?

Вот SQL Fiddle:

http://sqlfiddle.com/#! 9 / d75e30 / 11

И вот таблицы

Таблица 2 (моя таблица)

  ID | Company         | Entity |   Order#    |   Date     |    Serial    |    Item   |  Tech |   Status |
  1    Deeway             20779    4608580      2020-11-11       SN1           Item1      JD      Gathered
  2    Deeway Pearl HS    20780    4608580      2020-11-11       SN2           Item2      JD      Gathered
  3    Deeway Stony HS    1273     4608558      2020-11-11       SN3           Item3      JD      Gathered
  4    Zaper LTD          9995     4630230      2020-11-11       SN4           Item4      MJ      Assigned
  5    Zaper CP LTD       4295     4607371      2020-11-11       SN5           Item5      MJ      Assigned
  6    Wilder             4224     6630210      2020-11-11       SN6           Item6      PJ      Assigned
  7    Wilder             4224     7601371      2020-11-11       SN7           Item7      PJ      Assigned

Таблица 1 (источник)

 ID | Company         | Entity |   Order#    |   Date     |    Serial    |    Item
 1    Deeway             20779    4608580      2020-11-11       SN1           Item1
 2    Deeway Pearl HS    20780    4608580      2020-11-11       SN2           Item2
 3    Deeway Stony HS    1273     4608558      2020-11-11       SN3           Item3
 4    Zaper LTD          9995     4630230      2020-11-11       SN4           Item4
 5    Zaper CP LTD       4295     4607371      2020-11-11       SN5           Item5
 6    Wilder             4224     6630210      2020-11-11       SN6           Item6
 7    Wilder             4224     7601371      2020-11-11       SN7           Item7 
 8    Deeway             20779    4608580      2020-11-11       SN8           Item8
 9    Deeway             20779    4608580      2020-11-11       SN9           Item9
 10   Wilder             4224     7601371      2020-11-11       SN10          Item10 
 11   Zaper LTD          9995     4630230      2020-11-11       SN11          Item11

Вот моя попытка, она не добавляет новые записи , он только обновляет существующие записи или вставляет, когда в таблице 2 (моя таблица) нет записей названия компании.

$query_checkifexist = mysqli_query($mysqli, "
SELECT * 
FROM mytable_nextgenorders2 
WHERE Company LIKE CONCAT(SUBSTRING_INDEX('$mytable_nextgenorder_companyname', ' ', 1),'%') 
 ");


$row_check          = mysqli_num_rows($query_checkifexist);



if ($row_check > 0) {

$query_update = mysqli_query($mysqli, "
UPDATE mytable_nextgenorders2 SET
mytable_nextgenorder_companyname='$mytable_nextgenorder_companyname',
mytable_nextgenorder_company_entity='$mytable_nextgenorder_company_entity',
mytable_nextgenorder_ordernumber='$Entmytable_nextgenorder_ordernumberity',
mytable_nextgenorder_deliverydate='$mytable_nextgenorder_deliverydate',
mytable_nextgenorder_serialnumber='$mytable_nextgenorder_serialnumber',
mytable_nextgenorder_item='$mytable_nextgenorder_item',
mytable_nextgenorder_tech='$mytable_nextgenorder_tech',
mytable_nextgenorder_tech='$mytable_nextgenorder_status'
WHERE mytable_nextgenorder_companyname LIKE CONCAT(SUBSTRING_INDEX('$mytable_nextgenorder_companyname', ' ', 1),'%') ");


} else {


if (!$mysqli->query("INSERT INTO mytable_nextgenorders2 (
mytable_nextgenorder_companyname,
mytable_nextgenorder_company_entity,
mytable_nextgenorder_ordernumber,
mytable_nextgenorder_deliverydate,
mytable_nextgenorder_serialnumber,
mytable_nextgenorder_item,
mytable_nextgenorder_tech,
mytable_nextgenorder_status
)
SELECT 
GROUP_CONCAT(DISTINCT nextgenorder_companyname) AS nextgenorder_companyname,
GROUP_CONCAT(DISTINCT nextgenorder_company_entity) AS nextgenorder_company_entity, 
GROUP_CONCAT(DISTINCT nextgenorder_ordernumber) AS nextgenorder_ordernumber,
nextgenorder_deliverydate,
nextgenorder_serialnumber,
nextgenorder_item,
'$mytable_nextgenorder_tech',
'$mytable_nextgenorder_status'
FROM nextgenorders2
WHERE Company LIKE CONCAT(SUBSTRING_INDEX('$nextgenorder_companyname', ' ', 1),'%') ")) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...