УДАЛИТЬ строки, которых нет в инструкции INSERT mysql

У меня следующая ситуация:

У меня есть таблица mysql, в которую я загружаю свой инвентарь. Структура таблицы выглядит так:

<pre>
<table>
<thead>
<tr>
<th>SKU</th>
<th>price</th>
<th>quantity</th>
</tr>
</thead>
<tbody>
<tr>
<td>393939</td>
<td>39.99</td>
<td>32</td>
</tr>
</tbody>
</table>
</pre>

На самом деле я делаю это следующим образом:

mysqli_query(
$sql,
"INSERT IGNORE INTO de_minmaxpreis(sku, price, quantity) VALUES ('$teile[3]', '$teile[4]', '$teile[5]')");

Теперь, если у меня есть данные, извлеченные из файла инвентаризации, который я использую для импорта, я хочу, чтобы данные, которых нет в файле инвентаризации, были удалены из таблицы. Я не могу обрезать таблицу до импорта нового файла, потому что сведения о ценах могли измениться, и приоритет для этого находится в моей таблице mySql. (Более актуальный).

Хм, надеюсь, кто-то понимает мой вопрос и может помочь.

0

Решение

Если я правильно понял, вам нужно вставить только новые SKU и удалить те, которых нет в новом импорте. Это означает, что вам не нужно обновлять что-либо из нового импорта, например, «количество». Если это так, вы можете это сделать, и предполагая, что SKU уникален

$sql="select sku from de_minmaxpreis";
//get the skus in array like $oldskus[]='somesku';

//make a new data array look like $newDataSkus[$sku]=$dataArray;
foreach($oldskus as $oldSku){
//here if odlsku is not present in new data delete it from a DB
if( ! array_key_exists($oldSku , $newDataSkus ){
//old sku not present anymore delete it
$sql="delete from de_minmaxpreis .... "}else{
//as sku is in DB remove that sku from newData at the end you will get data that is new and needs to be inserted
unset($newDataSkus[$oldSku];
}

}
//finally inset new data
foreach($newDataSkus as $tiele){
mysqli_query(
$dbCon,
"INSERT INTO de_minmaxpreis(sku, price, quantity) VALUES ('$teile[3]', '$teile[4]', '$teile[5]')");
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]