0

私は 2 つのテーブルを持っています 1. paypal_ipn_orders テーブル 2 はルックアップです。ルックアップ テーブルには、item という列名のすべてのアイテムのリストがあり、sort_id というラベルの付いた別の列もあります。これは、すべてのアイテムに内部的に使用される 8 桁の数字です。表 1 の paypal_ipn_orders は注文を受け取り、いくつかの列がありますが、質問にとって重要なのはほんのわずかです。id、payer_email、item_name、sort_num、および payment_status。必要なのは、注文がテーブル paypal_ipn_orders に入ったときです。ルックアップ テーブルを相互参照し、アイテム名が一致したときに、8 桁の数字を sort_num というラベルの付いた列に割り当てる必要があります。

table: paypal_ipn_orders
id       payer_email         item_name        sort_num               payment_status
1        greg@gmail.com      batman card      NULL                    completed
2        steve@gmail.com     superman card    NULL                    completed
3        gary@gmail.com      spiderman card   NULL                    completed
4        sarah@gmail.com     captain america  NULL                    completed

ここにルックアップテーブルのサンプルがあります

table: lookup
item                   sort_id
batman card            12345678
superman card          12345677
spiderman card         12345676
captain america        12345675

クエリを実行した後の出力をどのように表示したいか。

table: paypal_ipn_orders
id       payer_email         item_name        sort_num               payment_status
1        greg@gmail.com      batman card      12345678                completed
2        steve@gmail.com     superman card    12345677                completed
3        gary@gmail.com      spiderman card   12345676                completed
4        sarah@gmail.com     captain america  12345675                completed

これが正確な構文ではないことはわかっていますが、アイデアは得られます

SELECT lookup.sort_id
INSERT INTO paypal_ipn_orders.sort_num
WHERE lookup.item = paypal_ipn_orders.item_name 
4

1 に答える 1

1

UPDATEではなく、を使用する必要がありますINSERT

UPDATE paypal_ipn_orders
SET sort_num = (SELECT sort_num
                FROM lookup
                WHERE lookup.item = paypal_ipn_orders.item_name)

ただし、2つの補足事項:

  1. これを行うと、テーブル全体が更新されます。挿入時にトリガーでこれを行うのがおそらく最善でしょう。

  2. 常にテーブルの値に依存するsort_num場合、2回保存する利点があるのではないかと思います。挿入時に値を保存しようとしている場合、または手動で変更できるようにしている場合は、理にかなっています。(つまり、テーブル内の を変更しても、 内の元の値を保持したい場合)。sort_numlookupsort_numlookuppaypal_ipn_orders

于 2012-07-30T04:01:06.613 に答える