-1

私はすでにこれを尋ねましたが、質問は回答なしで閉じられたので、新しい質問を投稿します. テーブル ps_psroduct サプライヤーの 2 番目のテーブルに欠落している値を追加しようとしています。いくつかの値が欠落しており、ps_product から追加したいと考えています。不足している値をリストして ps_product_supplier に挿入したいので、重複はありません。ps_product の一部の値は ps_product_supplier と同じですが、すべてではないため、これらの値をフィルタリングして正しく挿入したいと考えています。したがって、いくつかの値は ps_product に存在しますが、ps_product_supplier には存在しません。id_product をチェックして不足している行を追加することで、不足している行をテーブルに挿入したいと考えています。今のところ、すべての値が出力されていますが、ps_product_supplier に挿入できる欠損値のみが必要です。

どうやってするか?出力では、次のようになります。

USPJESNO ID 1 ne postoji u drugoj tablici i trenutno: 0
USPJESNO ID 2 ne postoji u drugoj tablici i trenutno: 1
USPJESNO ID 3 ne postoji u drugoj tablici i trenutno: 2
USPJESNO ID 4 ne postoji u drugoj tablici i trenutno: 3
USPJESNO ID 5 ne postoji u drugoj tablici i trenutno: 4
USPJESNO ID 6 ne postoji u drugoj tablici i trenutno: 5

すべての値についてですが、ID を照合し、欠落している部分のみを印刷して、ps_product_supplier に ps_product の値を含む行を作成する必要があります。

$kveri = "SELECT id_product,id_supplier,supplier_reference, wholesale_price FROM ps_product";

    $ispis = mysql_query($kveri) or die(mysql_error());

               while ($row = mysql_fetch_array($ispis)){


               $trenutnired = $row['id_product'];
               $trenutnired1 = 0;
               $trenutnired2 = $row['id_supplier'];
               $trenutnired4 = $row['supplier_reference'];
               $trenutnired5 = $row['wholesale_price'];
               $trenutnired6 = 3;



                                                            //echo $trenutnired;

            //$drugatab = "SELECT * FROM ps_product_supplier WHERE id_product = '$trenutnired'";
            $drugatab = "SELECT id_product FROM ps_product_supplier WHERE id_product = '$trenutnired'";
            $rezultati = mysql_query($drugatab) or die(mysql_error());
                if(mysql_num_rows($rezultati)){
            // Successful query...

            echo "USPJESNO ID $trenutnired ne postoji u drugoj tablici i trenutno: $countUpdated<br />";
            //mysql_query("INSERT INTO ps_product_supplier (id_product_supplier, id_product, id_product_attribute, id_supplier, product_supplier_reference, product_supplier_price_te, id_currency)  VALUES ('', '$trenutnired', '$trenutnired1',  '$trenutnired2', '$trenutnired4', '$trenutnired5', '$trenutnired6')");
            $countUpdated++;
        } else {
            //$countUpdated++;
            echo "ID $trenutnired ne postoji u drugoj tablici i trenutno: $countUpdated<br />";
        }
        }

このクエリは、データを挿入するための 1 つの ID に対して機能しますが、欠落しているすべての ID が必要です。

INSERT INTO ps_product_supplier 
(id_product_supplier, id_product, id_product_attribute, id_supplier,
product_supplier_reference, product_supplier_price_te, id_currency)  
VALUES(NULL, 6216, 0, (SELECT id_supplier FROM ps_product WHERE id_product = 6216),
(SELECT supplier_reference FROM ps_product WHERE id_product = 6216), 
(SELECT wholesale_price FROM ps_product WHERE id_product = 6216), 3);
4

1 に答える 1

1

ps_products にあるが、ps_productsuppliers にはない製品を選択しようとしていると思います。私がそれについて正しければ、おそらくこの方法が最も理解しやすいでしょう。

select id_product
from ps_products
where id_product not in (select id_product from ps_product_supplier;
于 2012-12-27T19:20:49.637 に答える