1

別のテーブルのフィールドに応じてレコードを複製する SQL クエリを作成しようとしています。私はmySQL 5を実行しています。

(レコードの重複はデータベース構造が悪いことを示していることは知っていますが、データベースを設計したわけではなく、すべてをやり直す立場にありません - これは wordpress で実行されているショップ e コマース データベースです。)

特定の属性を持つ各製品には、同じいくつかの画像へのリンクが必要です。そのため、製品にはテーブル内の画像ごとに行が必要です。データベースには実際には画像が含まれておらず、ファイル名だけが含まれています。(画像はお客様が選択できるクリップアートです)

これらの記録に基づいて...

SELECT * FROM `wp_shopp_spec` WHERE name='Can Be Personalised' and content='Yes'

私はこのような何かをしたい..

そのクエリに一致する各レコードについて、wp_shopp_asset からレコード 5134 ~ 5139 をコピーしますが、一意になるように ID を変更し、「親」列のセルをテーブル wp_shopp_spec の「製品」の値を持つように設定します。これは、上記のクエリに一致するレコードごとに 6 つの新しいレコードが作成されることを意味します。すべて「親」の値は同じですが、一意の ID があり、他のすべての列は元からコピーされます (つまり、レコード 5134-5139)。

それが十分に明確であることを願っています-どんな助けでも大歓迎です。

4

3 に答える 3

0

このような情報を探している人は、shopp_spec テーブルが使用されなくなったことを知っておいてください。すべての仕様 (詳細) は、shopp_meta テーブルに格納されます。

于 2015-05-26T11:57:50.837 に答える
0

必要な資産値にクロス結合する必要があるようです。次のようなものです:

Select spec.parent, asset.id as uniqueid, ...
From`wp_shopp_spec` spec
    Cross Join  (
                Select id
                From `wp_shopp_asset`
                Where Id Between 5134 And 5139
                ) asset
Where name='Can Be Personalised' 
    And content='Yes'
于 2010-04-28T23:34:23.383 に答える
0
INSERT wp_shopp_asset
(parent, col1, col2, ...)
SELECT wp_shopp_spec.product, wp_shopp_asset.col1, wp_shopp_asset.col2, ...
FROM wp_shopp_spec
CROSS JOIN wp_shopp_asset
WHERE wp_shopp_spec.name='Can Be Personalised'
  AND wp_shopp_spec.content='Yes'
  AND wp_shopp_asset.id BETWEEN 5134 AND 5139
于 2010-04-28T23:34:56.643 に答える