2016-07-27 17 views
0

Magentoデータベースに「New From」というデータがありますが、「New To」はありません。innerjoinと動的更新で選択

今、私はそれが開かれた後、1ヶ月「新しいもの」このクエリ閉鎖にUPDATEステートメントを実行するために500件の以上のアイテムに関するので、実行したい
SELECT 
catalog_product_entity.entity_id, 
catalog_product_entity.sku, 
a.value as New_From, 
b.value as New_To 
FROM `catalog_product_entity` 
INNER JOIN catalog_product_entity_datetime as a on a.entity_id = catalog_product_entity.entity_id and a.attribute_id = '93' 
INNER JOIN catalog_product_entity_datetime as b on b.entity_id = catalog_product_entity.entity_id and b.attribute_id = '94' 
WHERE a.value IS NOT NULL AND b.value IS NULL 

これを実行する方法はありますか?

だから、明確にする:

表1:(catalog_product_entity)

| entity_id | sku | 
| --------- | --- | 
|  1  | ABC | 
|  2  | DEF | 

表2:(catalog_product_entity_datetime)

| id | entity_id | attribute_id |   value   | 
| --- | --------- | ------------ |   -----   | 
| 1 |  1  |  93  | 2013-06-12 00:00:00 | 
| 2 |  1  |  94  | 2013-07-12 00:00:00 | 
| 3 |  1  |  98  | Some other attribute | 
| 4 |  2  |  93  | 2014-08-20 00:00:00 | 
| 5 |  2  |  94  |  NULL   | <- This I want updating 
| 6 |  2  |  98  | Some other attribute | 

を私は表2にNULL値を更新したいですその同じテーブルの日付+ 1ヶ月。私の検索が戻る:

| entity -id | sku |  New_From  |  New_To   | 
| ----------- | --- | ------------------- | ------------------- | 
|  2  | DEF | 2014-08-20 00:00:00 |   NULL   | 

だから私はNew_From + 1月にそのフィールドを更新クエリを作成したいと思います。私の心の中で

| entity -id | sku |  New_From  |  New_To   | 
| ----------- | --- | ------------------- | ------------------- | 
|  2  | DEF | 2014-08-20 00:00:00 | 2014-09-20 00:00:00 | 

私はこのようなものに終わるだろう。(しかし、この1つは動作しません)

UPDATE catalog_product_entity_datetime 
SET value = TIMESTAMP(a.value+300000000) 
INNER JOIN catalog_product_entity_datetime as a on a.entity_id = catalog_product_entity_datetime.entity_id and a.attribute_id = '93' 
WHERE attribute_id=94 
+0

ご質問不明な点がある場合は、サンプルデータと希望の結果を表示してください。 – Blank

+0

@JPGを説明するテーブルをいくつか追加しました – Jacco

答えて

0

これを試してみてください:

UPDATE catalog_product_entity_datetime t1 
JOIN catalog_product_entity t2 
ON t1.entity_id = t2.entity_id 
AND t1.attribute_id = 94 
JOIN catalog_product_entity_datetime t3 
ON t2.entity_id = t3.entity_id 
AND t3.attribute_id = 93 
SET t1.value = CASE WHEN t1.value IS NULL THEN date_add(t3.value, interval 1 month) 
        ELSE t1.value END 
; 

Demo Here

関連する問題