0

データベースを移行するために、次の SQL コードを作成しました。UP クエリは正常に動作していますが、DOWN クエリを修正する方法がわかりません。payment_gateway テーブルにあるすべてのデータを挿入したいだけですが、正しい reseller_shop.id にも一致する必要があります。

// UP
INSERT INTO payment_gateway (`type`, account, keyIn, keyOut, resellerShopId)
SELECT 'paymentGatewayOgone', rs.ogoneAccount, rs.ogoneSignatureIn, rs.ogoneSignatureOut, rs.id
FROM reseller_shop AS rs
WHERE rs.ogoneAccount <> '';

// DOWN
INSERT INTO reseller_shop (ogoneAccount, ogoneSignatureIn, ogoneSignatureOut)
SELECT pg.account, pg.keyIn, pg.keyOut
FROM payment_gateway AS pg
WHERE pg.type = 'paymentGatewayOgone'
AND reseller_shop.id = pg.resellerShopId
4

3 に答える 3

2
INSERT INTO reseller_shop (ogoneAccount, ogoneSignatureIn, ogoneSignatureOut)
SELECT pg.account, pg.keyIn, pg.keyOut FROM payment_gateway AS pg 
WHERE pg.type = 'paymentGatewayOgone' AND  pg.resellerShopId in 
(select reseller_shop.id from reseller_shop_id)

お役に立てれば

于 2013-01-31T11:49:20.093 に答える
2

INSERT INTO の代わりに UPDATE を使用する必要があるようです。

UPDATE reseller_shop AS rs, payment_gateway AS pg
SET rs.ogoneAccount = pg.account, rs.ogoneSignatureIn = pg.keyIn, rs.ogoneSignatureOut = pg.keyOut
WHERE pg.type = 'paymentGatewayOgone'
AND rs.id = pg.resellerShopId
于 2013-01-31T12:01:06.050 に答える
0

Some thing like this:

INSERT INTO reseller_shop (ogoneAccount, ogoneSignatureIn, ogoneSignatureOut)
SELECT pg.account, pg.keyIn, pg.keyOut
FROM payment_gateway AS pg 
    INNER JOIN reseller_shop AS rs ON  rs.id = pg.resellerShopId
WHERE pg.type = 'paymentGatewayOgone'

or:

INSERT INTO reseller_shop (ogoneAccount, ogoneSignatureIn, ogoneSignatureOut)
SELECT pg.account, pg.keyIn, pg.keyOut
FROM payment_gateway AS pg 
WHERE pg.type = 'paymentGatewayOgone' 
    AND EXISTS (SELECT * 
                FROM reseller_shop AS rs 
                WHERE rs.id = pg.resellerShopId)
于 2013-01-31T11:51:30.137 に答える